无法让$ observe触发任何更改。
.directive('watchContent', function () {
return {
restrict: 'A',
link: function (scope, elem, attrs) {
console.log(attrs.class)
attrs.$observe("class", function(value){
console.log('change !');
if(value.indexOf("open") > -1){
alert("yes")
}
})
scope.$watch(function() {return attrs.class; }, function(newValue, oldValue, scope){
console.log('change !');
console.log(newValue)
console.log(oldValue)
console.log(scope)
console.log(attrs.class)
// debugger;
if (elem.hasClass('open')) {
console.log('YEs')
} else {
console.log('no')
}
});
}
};
})
这是我试图触发的地方:
<li class="dropdown dropdownChange" id="contentMenu" watch-content>
<a class="dropdown-toggle" >
Content options
</a>
<ul class="dropdown-menu" >
<li ng-repeat="option in options">
<a><input type="checkbox" checklist-model="contentChoices" checklist-value="option.id" ng-click="$event.stopPropagation()" ng-change="changed()"> {{option.slug}} </a>
</li>
</ul>
</li>
答案 0 :(得分:10)
我认为这是因为你没有内插的类值。
$ observe仅适用于插值属性,例如class =“{{whatever}}”。
由于您的类没有插值,因此您需要使用范围。$ watch(...)而不是。