Angular指令删除ng-click功能

时间:2014-04-04 01:24:08

标签: angularjs angularjs-directive

我的指令几乎是angular-ui项目中旧的uiIf指令的精确副本。

当我添加我的"限制"指令,根据用户有权执行的操作成功添加/删除按钮。

问题是ng-click操作不再有效。它不会调用控制器的范围并触发要调用的函数。有谁看到可能导致我的问题的原因?

请参阅:http://plnkr.co/edit/38UeVCCYkdzxBkxOLe5g?p=preview

<button restrict="'canPerformAction'" ng-click="action()">Action</button>

'use strict';
angular.module('directives.restrict', [])
.directive('restrict', function(_){
  return{
    transclude: 'element',
    prioriry: 1000,
    terminal: true,
    restrict: 'A',
    compile:  function(element, attr, transclude) {
      var user = { caps: [ 'canPerformAction', 'canDance', 'canWrite' ] };

      return function(scope, element, attr) {
        var childElement;
        var childScope;

        scope.$watch(attr.restrict, function(attributes) {
          if (childElement) {
            childElement.remove();
            childElement = undefined;
          }
          if (childScope) {
            childScope.$destroy();
            childScope = undefined;
          }

          if(_.intersection(user.caps, attributes.split(' ')).length > 0) {
            childScope = scope.$new();
            transclude(childScope, function(clone) {
              childElement = clone;
              element.after(clone);
            });
          }
        });
      };
    }
  };
});

0 个答案:

没有答案