Angularjs 通过ng点击/ng向指令提交承诺

Angularjs 通过ng点击/ng向指令提交承诺,angularjs,Angularjs,基本上,我创建了一个指令,该指令通过ng click将承诺传递给link函数,并检测承诺何时完成,以便我可以将一个类附加到它 例如: .directive('myDirective', function($parse) { return { restrict: 'A', scope: { ng-click: '&' }, link: function(scope) {

基本上,我创建了一个指令,该指令通过ng click将承诺传递给link函数,并检测承诺何时完成,以便我可以将一个类附加到它

例如:

.directive('myDirective', function($parse) {
    return {
         restrict: 'A',
         scope: {
            ng-click: '&'
         },
         link: function(scope) {
            var d = $parse(scope.ngClick);

            element.on('click', function(event) {
                d().then(function() {
                    element.addClass(attrs.myDirective);
                });
            });
        }
    };
});

<element ng-click="promise();" my-directive="class"></element>

//controller function
$scope.promise = function() {
    return promise().then(function() {});
}
.directive('myDirective',函数($parse){
返回{
限制:“A”,
范围:{
ng单击:“&”
},
链接:功能(范围){
var d=$parse(scope.ngClick);
元素上('click',函数(事件){
d()。然后(函数(){
元素addClass(attrs.myDirective);
});
});
}
};
});
//控制器功能
$scope.promise=函数(){
返回promise().then(函数(){});
}
它正在做我想要的事情,除了控制器函数被调用三次。我确实想在这里使用require:“^ngClick”,但由于ngClick指令没有任何控制器,因此我无法执行此操作。谁能给我指出正确的方向吗?谢谢

将event.preventDefault()添加到我的指令链接中的event.on('click')函数中:

element.on('click', function(event) {
    event.preventDefault();
    d().then(function() {
        element.addClass(attrs.myDirective);
    });
 });

你好我想在我的控制器上执行业务逻辑,这就是为什么我需要ng click。