我想用我的指令重新创建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();
}
}
});
和我想要绑定的行:
<li ng-repeat="item in items" ns-click-hack="toggle(); item.action()">
toggle
和item.action
来自其他指令。
你能指出我犯错的地方吗?
答案 0 :(得分:2)
如果您尝试重新创建ng-click
,那么查看source of the ngClick
directive可能会更好。
例如,它不会创建隔离范围,因为只能在元素上创建一个隔离范围,并且它会尝试适应其他指令。另一种方法是$parse
属性值,这是内置实现正在做的事情。
如果你只是在创造一个可怜的男人&#34;那么,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()">