2014-01-23 54 views
9

我正在使用角度ui路由器。ng-cloak在模板解析時不能幫助隱藏元素的角度ui路由器

我想說明的東西,如果<div ng-show="total > 0">

雖然模板下載並立即顯示,我們可以看到的div閃爍,控制器負載$scope.total =之前。

人們會認爲$scope.total在開始時是未定義的,因此div將被隱藏,但我認爲該模板尚未被解析,只是顯示爲raw。我嘗試使用ng-cloak,但它似乎沒有幫助。 Ngcloak應該在角度啓動時使用,但我使用的是ui-router,所以角度堆棧已經加載。我怎樣才能隱藏我的元素在模板上,而不訴諸ui路由器的決議?

我使用角1.2.8和ui路由器0.2.7。

+0

你能夠創建一個簡化小提琴嗎? –

回答

1

你必須應用這種風格讓ng-cloak工作

[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { 
    display: none !important; 
} 
0

無解的工作對我來說。唯一的解決辦法是:

在每個控制器中,添加:

$scope.$on('$viewContentLoaded', function() { 
      $scope.completed = true; 
});    

和在每個視圖的HTML中,添加NG-如果=「完成」到最上面的元件。例如:

<div ng-if="completed"> 

注意:問題僅限於firefox和ui-router。在那裏,ng-cloak被忽略,並且沒有css解決方法。對我而言唯一的解決方案就是我上面給出的解決方案。