AngularJS - 权限指令

kle*_*sta 10 permissions directive user-permissions angularjs

我试图写指令将评估用户权限.

如果不允许用户查看给定内容

  1. 内容不会显示(完成,工作正常)

  2. 来自权限指令内的控制器的请求不会被触发.

例:

控制器:

function MyController ($scope){
     // performing imediately server request, witch is allowed only for admin
     // therefore i will get error when non admin user access this page
}
Run Code Online (Sandbox Code Playgroud)

权限指令:

return {
        priority: 1000,
        restrict: 'E',
        link: (scope, element, attrs) => {
            var permission = attrs.permission;

            if (/*evaluating permission*/) { 
                // user has permission, no work for me
                return;
            }

            element.remove();
        }
    };
Run Code Online (Sandbox Code Playgroud)

全部一起:

<permission permission="isAdmin">
    <div ng-controller="MyController">
    </div>
</permission>
Run Code Online (Sandbox Code Playgroud)

此版本正在从DOM中删除元素,但MyController中的请求仍然会被执行.当然,我可以在MyController中检查权限,但我不想这样做.

谢谢你的帮助.

kle*_*sta 1

我尝试了另一种方法,并将元素的删除放入编译函数中。根据日志,它是在控制器之前执行的,所以它是正确的位置。无论如何,请求仍然被解雇。所以我尝试盲拍删除元素子元素(我知道,这没有意义,删除元素应该足够并且也应该删除子元素)。

但它成功了!

compile: function(element) { var children = element.children(); children.remove(); element.remove(); }

它正在工作,但我不确定它有多好(例如未来版本 Ang。)