$ scope。$ watch不会在每次更改时触发

萨哈尔·萨宾(Sahar Sabin):

我正在使用angularJS 1.4.8,昨天我注意到$ scope。$ watch不会在导致我的应用程序错误的每个更改上触发。

有没有一种方法可以迫使它立即进行每个更改?像这段代码一样,在消息的每次更改中,我都希望监视中的函数触发:

(function(){

  angular.module('myApp', [])
  .controller('myAppController', myAppController)

  function myAppController($scope){
    console.log('controller loading !');
    $scope.message = 'message1';

    $scope.$watch('message', function(newMessage){
      console.log('newMessage', newMessage)
    });

    function changeMessage(){
      $scope.message='hi';
      $scope.message='hi12';
    }

    changeMessage(); 
  }

})();

控制台将打印:

controller loading !
newMessage hi22

插头链接https://plnkr.co/edit/SA1AcIVwr04uIUQFixAO?p=preview

编辑:我真的很想知道是否还有其他方法,而不是用超时包装更改并使用范围应用,在我的原始代码中,我在多个地方更改了scope属性,并且我想避免每次更改都使用此方法。

Ajinkya Dhote:

更新您的changeMes​​sage函数,使其使用$ scope。$ apply函数,该函数将确保您的更改得到反映,并且angular知道您对变量的更改。

changeMessage() {
   setTimeout(function () {
        $scope.$apply(function () {
          $scope.message = "Timeout called!";
        });
    }, 2000);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AngularJS 1.5:scope。$ watch内部链接函数不会在模型更改时更新

父控制器上的$ scope。$ watch不会在子ng-select上触发

属性更新时不会触发$ scope。$ watch

$ scope。$ on不会在$ rootScope之后触发。$角度服务中的广播

$ scope变量的更改未触发角$ watch

Angular onChange不会在数据更改时触发

componentDidMount 不会在道具更改时触发

React useEffect不会在路线更改时触发

角$ scope不会在Bootbox回调中更新

调用angular.extend不会导致$ scope。$ watch触发

没有$ scope.digest,$ watch不会触发

Webpack不会在更改时重建

$ scope或$ scope。$ watch中的作用域?

useEffect() 不会在属性对象更改时触发(深度对象)

UICollectionView invalidateLayout不会在屏幕方向更改时触发sizeForItem

React MobX不会在道具更改时触发重新渲染

角度-ng-change不会在选择更改时触发

React / Redux Connect不会在商店更改时触发mapStateToProps

React typescript useContext 不会在更改时触发重新渲染

$ scope。$ watch在jQuery onchange之后不触发?

Tensorflow 的 variable_scope() 和 tf.AUTO_REUSE 不会在 for 循环中重用变量

角不会呈现$ scope

刷新$ scope更改

点击事件不会在for循环的每次迭代中触发

Android按钮不会在每次点击时触发事件

AngularJS指令不会在范围变量更改时更新

React组件不会在状态更改时重新呈现

ngModel不会在更改时更新值

React 视图不会在状态更改时更新