javascript - scope.$observe 不是 AngularJS 指令中的函数

标签 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 不是函数

我是不是漏掉了一些非常愚蠢的东西?我有一个观察者 ($watch) 观察一个更全面的对象 isWatchObject,这很好。

我可以简单地将 isEnabled 添加到作用域并对其进行双向绑定(bind),不过 $observe 在这里会好得多。

我经常使用 $watch,虽然不是那么多 $observe - 所以我一定是遗漏了一些东西..

知道为什么会抛出错误吗?

最佳答案

$observe 将被放置在一个属性上。查看$compile.directive.Attributes文档以获取更多信息。在你的例子中,你会做类似的事情(假设 isEnabled 是一个像 is-enabled="true" 这样的属性)...

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

关于javascript - scope.$observe 不是 AngularJS 指令中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30919293/

相关文章:

javascript - 在 HTTP 请求 AngularJS 之后将数据从工厂返回到 Controller

angularjs - 在指令中使用 controllerAs 语法访问父方法

javascript - Angular 2 with vanilla Javascript - 将数据从 HTML 传递到输入

javascript - 带有 React 的 Rabbit-MQ

javascript - 如何根据用户区域设置使用自定义日期格式显示日期

angularjs - 如何在 ngRepeat 中延迟 ngAnimate

angularjs - 单击干净的方式将 HTML 模板注入(inject) DOM(创建类的实例)?

angularjs - Angular 指令需要相同的元素

php - Javascript 数组中的当前条目

javascript - 如何获取/读取其他网站文件结构