Angularjs 将侦听器添加到属性指令?
我有一个类似这样的指令。它添加了一个基于布尔值的类Angularjs 将侦听器添加到属性指令?,angularjs,Angularjs,我有一个类似这样的指令。它添加了一个基于布尔值的类 .directive('gdShow', function(){ return{ restrict: 'A', link: function(scope, elem, attrs){ console.log(attrs.gdShow); if(attrs.gdShow === true){ elem.addClass('gdS
.directive('gdShow', function(){
return{
restrict: 'A',
link: function(scope, elem, attrs){
console.log(attrs.gdShow);
if(attrs.gdShow === true){
elem.addClass('gdShow');
}else{
elem.addClass('gdHide');
}
}
};
我希望这个指令在我传递给diercative的属性更新时更新这个类。我这样传递它:gdshow=“{{posted}}”
比如一个监听器或者一个数据绑定。这就是我要找的
我试图补充
scope: {
ngShow: '=',
},
但这也不起作用。简单的解决方案是使用
attrs.$observe
方法监视属性值的更改。如果您不想,这不需要您创建隔离作用域
用户名
你好
app.directive('gdShow',function(){
返回{
限制:“A”,
链接:功能(范围、要素、属性){
属性$observe('gdShow',函数(gdShow){
国际单项体育联合会(gdShow){
元素removeClass(“隐藏”);
}否则{
元素addClass(“隐藏”);
}
});
}
};
});
使用ng class
来做这类事情。文件是
既然还有一个可用的指令,为什么还要编写另一个指令?您可以避免自己指令的复杂性,并使用现有指令ngClass从模板中执行此操作:
<any-element ng-class="{'gdShow': posted, 'gdHide': !posted}"></any-element>
作用域:{gdShow:'='},然后您可以使用“scope.gdShow”访问is。如果我们试图有条件地添加一个类,那么ng类可能值得研究。不管怎样,@Studie在这里很好地回答了实际问题。我支持@rdjs的评论。我的实际案例更复杂,有延迟等。我认为这只是纯js,所以我不想把它带到问题中。我的实际案例更复杂,有延迟等。我认为这只是纯js,所以我不想把它带到问题中。
<any-element class="{{posted ? 'gdShow' : 'gdHide'}}"></any-element>