AngularJS - $watch无法按预期工作

AngularJS - $watch not working as expected

本文关键字:工作 watch AngularJS      更新时间:2023-09-26

这是我的应用程序.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)
  });
}]);

我想,3秒钟后,我会看到:

'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没有关注那个事件。使用$timeout Angular 的服务,然后您可以看到预期的结果。

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