我试图在ng-class条件下使用'this',但它不起作用。
我基本上是在尝试这个:
<div class=".." ng-class="{hidden: $(this).find(..).hasClass('trigger')}">
</div>
我希望AngularJS根据嵌套元素上不同类的存在来应用“隐藏”类。
我应该将复杂的代码移动到控制器吗?如何引用正在定义的元素ng-class?
问候!
答案 0 :(得分:1)
在这种情况下,您可能想要创建自定义指令。一个好的经验法则是你不应该直接从控制器进行dom操作。在您的情况下,自定义指令将如下所示:
...
.directive('applyTrigger', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var triggerEl = element.find(..);
scope.$watch(function() {
return triggerEl.attr('class'); },
function(newValue){
if(triggerEl.hasClass('trigger')) {
element.addClass('hidden');
} else {
element.removeClass('hidden');
}
});
};
}
});
然后你可以在父div上使用它:
<div class=".." applyTrigger>
</div>
尝试一下,让我知道你发现了什么!
答案 1 :(得分:0)
您应该使用控制器告诉您是否应该设置ng-class。
<div class=".." ng-class="{hidden: {{showthisdiv}}}">
</div>
然后在控制器中设置showthisdiv。