来自控制器的异步$ scope主要更新未出现在视图中

时间:2014-01-23 14:11:31

标签: javascript angularjs data-binding asynchronous controller

为什么这段代码不起作用?我正在为$ scope分配一个值,当页面呈现时,我看到5但是一旦定时器触发,该值就不会更新。我想知道原始5需要变成什么样的对象,以便Angular将观察它的变化。此外,如果有一种正确的方法来做这种事情,那将很高兴知道。

app.controller('Total', ['$scope', function($scope) {
    $scope.total = 5;
    setTimeout(function() {
      $scope.total = 1300;
    }, 3000);
  }
]);

2 个答案:

答案 0 :(得分:0)

问题是Angular不知道我为$ scope.total see the StackOverflow answer for more information on how binding works分配了一个新值。解决方案是使用$ scope。$ apply并将赋值包装在函数中。然后,Angular会将之前的值与新值进行比较,以触发正确的函数see an explanation with sample code of $scope.$apply here

解决方案:

app.controller('Total', ['$scope', function($scope) {
    $scope.total = 5;
    setTimeout(function() {
      $scope.$apply(function() {
        $scope.total = 1300;
      });
    }, 3000);
  }
]);

答案 1 :(得分:0)

使用$ timeout,然后你不需要使用$ apply。

不同的问题,但这里的答案相同,ng-repeat not growing with object