watch无法正常工作

watch无法正常工作

这是我的app.js

var MyApp = angular.module('MyApp', []);

MyApp.controller('MyController', ['$scope', function($scope){

  $scope.watchMe = 'hey';

  $scope.init = function() {
    setTimeout(function() {
      $scope.watchMe = 'changed!';
    }, 3000)

  };

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

}]);


我以为,三秒钟后,我会看到:

'changed!'


在我的控制台中。

相反,我只看到:

'hey'


我在index.html中调用我的init()函数,如下所示:

<div ng-controller="MyController"  ng-init="init()">


为什么我看到此输出?

最佳答案

var MyApp = angular.module('MyApp', []);

MyApp.controller('MyController', ['$scope', '$timeout', function($scope, $timeout){

  $scope.watchMe = 'hey';

  $scope.init = function() {
  $timeout(function() {
      $scope.watchMe = 'changed!';
  }, 500);

  };

  $scope.$watch('watchMe', function(newVal, oldVal) {
     console.log(newVal);
  });

}]);


您正在使用setTimeout方法。 Angular没有看那个事件。使用angular的$ timeout服务,您可以看到预期的结果。

阅读有关角度摘要循环和脏检查的更多信息。

关于javascript - AngularJS-$ watch无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35402510/

10-09 20:25