我想做什么就能做的是“包装”的NG-隐藏的行为的“权限”指令......所以我可以做以下angularjs - 是否可以在指令中添加ng-属性?
<a href="/" permit="false">Hide me</a>
一切都很好,如果我决定简单地从元件上“移除”元件;但是,如果我尝试添加一个ng-hide,然后重新编译该元素。不幸的是,这会导致一个无限循环
angular.module('my.permissions', []).
directive 'permit', ($compile) ->
priority: 1500
terminal: true
link: (scope, element, attrs) ->
element.attr 'ng-hide', 'true' # ultimately set based on the user's permissions
$compile(element)(scope)
OR
angular.module('my.permissions', []).directive('permit', function($compile) {
return {
priority: 1500,
terminal: true,
link: function(scope, element, attrs) {
element.attr('ng-hide', 'true'); // ultimately set based on the user's permissions
return $compile(element)(scope);
}
};
});
我已经试过了没有优先级或终端无济于事。我已经尝试了许多其他的排列组合(包括删除'permit'属性以防止它不断重新编译,但是它似乎归结为:似乎没有办法修改元素的属性并重新编译内联通过
一个指令。我敢肯定有我丢失的东西。
为什么你需要自定义的指令,如果你想要做的只是NG-隐藏= “假”? – 2014-09-24 17:27:55
真正的代码将根据用户拥有 – xdotcommer 2014-09-24 17:34:41
的权限确定是否在隐藏上执行true或false,您可以在指令中执行$(element).hide()$(element).show()。这不需要隐藏。 – 2014-09-24 17:40:56