我看过this和this,但似乎有一种更简单的方法。
在我看来,我有几个通过权限控制的菜单选项-即,并不是每个人都可以看到“仪表盘” View 。因此,在我的 View 菜单选项中,我有以下内容:
<li ng-show="validatePermission('Dashboard')">Dashboard</li>
在我的 Controller 中,我定义了一个validatePermission方法,用于查看当前用户的权限。例如:
$scope.validatePermission = function(objectName) {
if $scope.allPermissions......
同样在我的 Controller 中,我通过$ http调用加载这些权限:
$http.get('permissions/' + userid + '.json').success(function(data) {
$scope.allPermissions = data;....
问题是,在 View 调用validatePermission之前,不会加载$ scope.allPermissions。如何在 View 呈现之前等待allPermissions加载?
最佳答案
当尚未加载validatedPermission
时,让allPermissions
函数返回false。这样,只有在加载了ng-show
后,才会显示带有allPermissions
的元素。
或者,将ng-show="allPermissions"
放在封闭的<ul>
或<ol>
上。