在ES6中使用$ scope。$ watch

时间:2016-04-06 13:40:31

标签: javascript angularjs ecmascript-6

我在ES6项目中使用$ scope。$ watch时遇到了一些问题。手表会发射一次然后再发射一次。

以下是代码:

export class SomeController {
  constructor($log, $scope) {
    'ngInject'
    this.watched = 1;
    $scope.$watch('watched',(nv,ov)=>{
        $log(nv); //only fires once
    });
   }
  otherMethods(){}...
}

具体来说,我正在使用此生成器:https://github.com/Swiip/generator-gulp-angular

1 个答案:

答案 0 :(得分:5)

你可以试试这个:

$scope.$watch(() => this.watched, function (nv, ov) {
  console.log(nv);
});

更多解释here

这是一个带有演示的fiddle

此外,事件会在$digest周期触发:

  • DOM事件(用户更改输入字段的值,单击按钮以调用JavaScript函数等)

  • XHR响应触发回调

  • 浏览器的位置更改

  • 触发回调的计时器(setTimout,setInterval)

或者如果你明确地称之为。