我有一个简单的角度指令被点击时,增加了一个CSS类的元素:角指令不读属性
.directive("addClass", function() {
return {
scope: {
name: "=addClass"
},
link: function (scope, element, attributes) {
element.on("click", function() {
element.addClass(scope.name);
console.log("Element activated");
});
element.on("mouseleave", function() {
element.removeClass(scope.name);
console.log("Element deactivated");
});
}
}
});
我用它在我的链接:
<a href="" add-class="class-name">...</a>
但是当我点击我的链接我的事件处理程序执行,虽然scope.name
是undefined
。我可以使用attributes
来读取属性值,但这样做的好处在于将属性值分配给范围属性,如Angular Directives API中所述。
我在做什么错?
更好地使用模板和'NG-click'然后处理'click'事件。否则,您将需要通过调用'scope。$ apply'让Angular知道(如果您想操纵范围)您正在侦听DOM。 –
@DavinTryon我不认为'$ apply()'是必需的,因为他直接处理元素(不包含摘要循环)。此外,他的指令似乎与其他元素一起使用,所以不能使用自定义模板。 –
@MichaelBenford:谢谢。你写的东西绝对正确。 –