范围。$ observe不是AngularJS指令中的函数

时间:2015-06-18 15:13:21

标签: javascript angularjs angularjs-directive

采取以下指令:

appDirectives.directive('drFadeHighlight', ['$animate', '$timeout', function ($animate, $timeout) {
    return {
        scope: {
            isWatchObject: '='
        },
        restrict: 'A',
        link: function (scope, element, attr) {
            element.addClass('dr-fade-highlight');          
            scope.$observe('isEnabled', function () {
                console.log('i observed...');
                console.log(arguments);
            });
        }
    }
}]);

我已经把它剥掉了,只显示我遇到问题的部分。

当此指令应用于我收到错误的元素时:

TypeError: scope.$observe is not a function

我错过了一些非常愚蠢的东西吗?我有一个观察者($watch)正在观看更全面的对象isWatchObject,这很好。

我可以简单地将isEnabled添加到范围并对其进行双向绑定,但$observe在这里会更好。

我经常使用$watch,但不是$observe - 所以我必须遗漏一些东西......

为什么会出现错误?

1 个答案:

答案 0 :(得分:2)

$observe将放置在属性上。查看$compile.directive.Attributes文档以获取更多信息。在您的示例中,您会执行类似的操作(假设isEnabledis-enabled="true"之类的属性)...

link: function (scope, element, attr) {       
    attr.$observe('isEnabled', function (value) {
        console.log('i observed...');
        console.log(value);
    });
}