繁体   English   中英

AngularJs:$ watch不触发

[英]AngularJs: $watch not triggering

我知道这个问题已经被问过很多次,但是所公开的任何解决方案似乎都对我有用。 我有这个HTML

<body ng-controller="mainCtrl">
  <h4>{{size}}</h4>
  <input type="range" ng-model="size" min="1" max="100" />
  <div font-scale="{{size}}">I'm some text</div>
</body>

输入有效,值更改,并且实际上已正确绑定到{{size}}。

然后我有我的指令:

MyApp.controller('mainCtrl', function($scope) {
  $scope.size = 30;
});


MyApp.directive('fontScale', function(){
 return {
   link: function(scope, el, attrs){
     scope.$watch(attrs['fontScale'], function(newVal){
       console.log('testing');
       el.css('font-size', newVal+'px');
     });
    }
   }
 });

当页面加载时,“测试”仅在控制台中显示一次,但是通过滑块更改值时,不会显示一次。 但是它确实正确绑定了{{size}}的值。

添加“ TRUE”作为第三个参数是行不通的,而且奇怪的是,我正在学习的教程使用相同的代码!

我想念什么?

如果size属性在指令范围内可用(如注释中所述)。 然后,以下应该工作:

scope.$watch('size', function(newVal) {
    el.css('font-size', newVal+'px');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM