我想说我想要一个检查权限的指令。 所以我可以这样做:
<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元素。
解决该问题的正确解决方案是什么?
答案 0 :(得分:2)
反转逻辑并默认隐藏元素,然后根据promise值显示它。
类似于elem [0] .style.display =&#39; none&#39; - &GT; elem [0] .style.display =&#39; block&#39;
问问自己你的真正目标是什么,因为你并没有真正在客户端实施权限检查(或者你不应该)。这应该更多地为用户提供正确的UI体验。如果你想完全删除它,那么只需保留对父元素的引用,删除元素,并在你的promise返回时将其追加到父元素..或不。