我見過this和this,但似乎可能有一個更簡單的方法。等到範圍變量被加載後再在angular.js的視圖中使用它
在我看來,我有幾個菜單選項是通過權限控制 - 即不是每個人都可以看到「Dashboard」視圖。所以在我看來,我的菜單選項,我有類似如下:
<li ng-show="validatePermission('Dashboard')">Dashboard</li>
在我的控制器中我定義了一個validatePermission方法在那裏尋找當前用戶的權限。例如:
$scope.validatePermission = function(objectName) {
if $scope.allPermissions......
而且在我的控制,我通過$ HTTP調用加載這些權限:
$http.get('permissions/' + userid + '.json').success(function(data) {
$scope.allPermissions = data;....
的問題是,$ scope.allPermissions不會被認爲品牌前裝調用validatePermission。我如何等待所有權限在視圖呈現之前加載?
謝謝。這是否意味着validatePermissions函數將被多次調用?即可能最初在allPermissions未加載時,那麼它會在加載後再次調用它。它如何知道再次調用它(加載後)?難道只是被稱爲一次? –
我選擇了這個,因爲它看起來最簡單和有效 - 雖然我不是100%確定爲什麼。我猜Angular最初在顯示視圖時調用validatePermissions函數,即使allPermissions沒有加載(並且我返回false),當allPermissions被加載時它會再次調用函數 - 不知何故知道再次調用這個函數。 –
@ArthurFrankel - 是的,ng-watch中的表達式將在每個週期評估一次。 Angular作爲一個整體這樣工作 - 「ng-show」不是「顯示錶達式是否爲真」,它是「show * while表達式爲真」。其他的選擇是很好的,如果你真的需要加密,直到加載權限,但據我所知,你不在這裏。 –