我正在尝试使用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>
答案 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>
我编辑了我的答案。 您的目录是控制器所在的范围,以及它内部的所有功能范围。希望它有所帮助。