我想用我的指令(更改优先级)重新创建 nsClick
行为。
所以这是我的代码:
angular.module('MyApp').directive('nsClickHack', function () {
return {
restrict: 'E',
priority: 100,
replace: true,
scope: {
key: '=',
value: '=',
accept: "&"
},
link: function ($scope, $element, $attrs, $location) {
$scope.method();
}
}
});
以及我要绑定(bind)的行:
<li ng-repeat="item in items" ns-click-hack="toggle(); item.action()">
toggle
和 item.action
来自其他指令。
你能指出我哪里出错了吗?
最佳答案
如果您尝试重新创建 ng-click
,那么最好查看 source of the ngClick
directive .
例如,它不会创建隔离范围,因为只能在一个元素上创建一个隔离范围,并且它会尝试适应其他指令。另一种方法是 $parse
属性值,这是内置实现所做的。
如果您只是创建一个“穷人”版本的 ngClick
,那么,当然,您可以使用在作用域上定义的回调函数 "&"
,并且单击元素时调用它:
.directive("nsClickHack", function(){
return {
restrict: "A",
scope: {
clickCb: "&nsClickHack"
},
link: function(scope, element){
element.on("click", function(e){
scope.clickCb({$event: e}); // ngClick also passes the $event var
});
}
}
});
用法如你所愿:
<li ng-repeat="item in items" ns-click-hack="toggle(); item.action()">
关于javascript - 我的指令没有触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28448390/