即使绑定到另一个方法后,也会调用AngularJS原始ngClick方法

时间:2015-05-06 07:23:45

标签: angularjs

我正在尝试使用my指令的link属性覆盖按钮。问题是,当我点击按钮时,我的方法被调用,之后调用ng-click注册的原始方法。

我尝试过优先级,但它没有用。请帮我改写原始点击。

这是我的指示:

mainModule.directive('sessionTimeoutCheck', function () {
  return {
    priority: 1,
    restrict: 'AEC',
    template: '',
    scope: false,
    controller: SessionTimeoutController,
    link : function(scope,element,attr){
        scope.dataObj = element.attr('data-ng-click');
        element.bind("click", function(event){
            event.preventDefault();
            scope.canSubmitAngularForm(element, event);
        });
    }
  };
});

我的HTML是:

 <button session-timeout-check data-ng-if="button.type == 'button'" 
       data-ng-disabled="!!button.disableOnInvalid && form.$invalid || button.disable && button.disable()" 
       class="btn btn-info" data-ng-click="button.click($event)" 
       data-i18n-content="button.label | call" 
       data-ng-attr-qa-name="button-{{button.name}}" 
       class="btn btn-info">
</button>

1 个答案:

答案 0 :(得分:0)

这适合你吗?

mainModule.directive('sessionTimeoutCheck', function () {
   return {
      restrict: 'AEC',
      replace: true,
      scope: false,
      link: function (scope, element, attrs) {
         scope.submit = function(){
            //// logic here
            console.log("submit from link");
            scope.functionInController(); // it call the "functionInController" in the parent controller
         };
      },
      template: ""
   }
});

HTML

<button session-timeout-check
    class="btn btn-info" ng-click="submit()"
    class="btn btn-info">submit 
</button>

我编辑了我的答案。 您的目录是控制器所在的范围,以及它内部的所有功能范围。希望它有所帮助。