AngularJS中的权限指令

时间:2015-04-01 16:38:02

标签: angularjs

我想说我想要一个检查权限的指令。 所以我可以这样做:

<a permissions="something.delete">Delete</a>

如果&#34; something.delete&#34;在允许的权限列表中,然后没有任何内容呈现。

拥有此代码:

link: function (scope, element, attrs) {
   var permissionsPromise = PermissionService.checkForPermissions(attrs.permissions);

   permissionsPromise.then(function(result) {
     if (result=== false) {
        element.remove();
     }
  })
}

但是因为PermissionService.checkForPermissions()返回promise,所以可能需要一些时间来计算权限,同时链接函数会在知道权限检查结果之前呈现a元素。

解决该问题的正确解决方案是什么?

1 个答案:

答案 0 :(得分:2)

反转逻辑并默认隐藏元素,然后根据promise值显示它。

类似于elem [0] .style.display =&#39; none&#39; - &GT; elem [0] .style.display =&#39; block&#39;

问问自己你的真正目标是什么,因为你并没有真正在客户端实施权限检查(或者你不应该)。这应该更多地为用户提供正确的UI体验。如果你想完全删除它,那么只需保留对父元素的引用,删除元素,并在你的promise返回时将其追加到父元素..或不。