$观察不在AngularJS中工作

时间:2014-04-27 00:51:07

标签: angularjs angularjs-directive angularjs-scope angular-ui

无法让$ 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>

1 个答案:

答案 0 :(得分:10)

我认为这是因为你没有内插的类值。

$ observe仅适用于插值属性,例如class =“{{whatever}}”。

由于您的类没有插值,因此您需要使用范围。$ watch(...)而不是。