指令$ watch不会在类更改时调用

时间:2016-06-22 01:01:43

标签: javascript angularjs angularjs-directive smartadmin

我有一个角度应用程序,使用左侧菜单,带有显示/隐藏菜单栏,左侧菜单上显示/隐藏的操作是“数据操作”。我使用的是Smart Admin,代码如下

<span class="minifyme" data-action="minifyMenu"> <i class="fa fa-arrow-circle-left hit"></i> </span>

触发数据操作时,将更改正文部分类或为其添加新类。

我的要求是对班级的改变做点什么。我有一个关于身体的指令来观看课程。

指令代码肯定会在页面加载时被调用,但是当类被更改时,即在执行数据操作时,它不会被调用。

(function () {
var app = angular.module("myApp");

var myDirective = [function () {
    return {
        restrict: "A",
        link: function (scope, element, attrs) {

            initialize();

            scope.$watch(function () {
             return element.attr('class');
        }, function (newValue) {
            if (element.hasClass('test')) {
                console.log('has class.');
            } else {
                console.log('classremoved.');
            }
        });

            function initialize() {

            };
        }
    };
}];

app.directive('myDirective', myDirective);

}());

如何解决此问题。

1 个答案:

答案 0 :(得分:1)

您需要在$ apply()方法中执行此操作,因为数据操作超出了角度上下文。