我正在写一个自定义指令。我希望该指令在元素中添加ng-click属性
attrs.$set('ng-click','clicked()');
我尝试在编译函数中添加ng-click指令,以及前后链接函数。该属性已添加但不起作用。我很欣赏任何见解。谢谢!
.directive('myDir', function () {
return{
compile: function (tElement, tAttrs, transclude) {
//tAttrs.$set('ng-click','clicked()');
return {
pre: function (scope, element, attrs) {
//attrs.$set('ng-click','clicked()');
},
post: function (scope, element, attrs) {
//attrs.$set('ng-click','clicked()');
scope.clicked = function(){
console.log('clicked!!!');
};
}
};
}
};
});
答案 0 :(得分:1)
您已经通过jQuery添加了该属性,因此Angular不知道它。快速回答是将调用包装在范围内。$ apply:
scope.$apply(function() {
tAttrs.$set('ng-click','clicked()');
});
所以Angular知道你改变了它。
但是对于其他方法,可以使用Angular更清晰地查看What is the best way to conditionally apply attributes in Angular?