javascript - $watch ngModel 从内部指令使用隔离范围

标签 javascript angularjs angularjs-directive

我正在尝试从我的链接函数内部观察我的模型值。

scope.$watch(attrs.ngModel, function() {
       console.log("Changed"); 
    });

当我在 Controller 中更改模型值时,不会触发 $watch 函数。

$scope.myModel = "ACT";

$timeout(function() {
   $scope.myModel = "TOTALS"; 
}, 2000);

fiddle :http://jsfiddle.net/dkrotts/BtrZH/4/

我在这里错过了什么?

最佳答案

您需要观察一个返回您正在观察的 $modelValue 的函数。

以下代码显示了一个基本示例:

app.directive('myDirective', function (){
    return {
        require: 'ngModel',
        link: function(scope, element, attrs, ngModel) {
           scope.$watch(function () {
              return ngModel.$modelValue;
           }, function(newValue) {
               console.log(newValue);
           });
        }
     };
});

Here's a plunker相同的想法付诸实践。

关于javascript - $watch ngModel 从内部指令使用隔离范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14693052/

相关文章:

javascript - 除非刷新,否则 Firebase 数据不会加载到列表中(AngularJS、Firebase 和 ionic)

angularjs - Angular 中的多个自定义指令范围

javascript - 谷歌地图 - 缩放时保持居中

javascript - jquery- 在变量中存储点击链接的 id

javascript - ng-class 没有按预期覆盖类

javascript - 等待数据返回,与 Angular 和 Breeze 同步调用

javascript - 将新数据加载到 $scope 时,AngularJS 应用程序卡住

javascript - Jquery Datepicker 上一个,悬停时隐藏的下一个图标

javascript - node.js 中的缓冲区分配

javascript - getLocationAbsUrl 与 getCurrentUrl