应该在Angular 1.4中手动调用$ digest吗?

时间:2015-05-20 11:57:42

标签: javascript angularjs

我正在使用Angular 1.4和带有组件的新路由器创建一个应用程序。但是我观察到,在$ scope中更改变量的值或者在控制器内部的变量值不会将值传播到模板。

我手动调用$ scope。$ digest()并且一切正常。这是方法吗?

这是我的代码。 (主控制器)

function appController ($router, authService, $scope) {
  $scope.alex1 = 'salut1';
  this.alex2 = "salut2";
  $router.config ([
      { path: '/home', components: {'main' : 'home'}},
      { path: '/account', components: {'main' : 'account' }},
      { path: '/campaigns', components: {'main' : 'campaigns' }},
      { path: '/login', components: {'main' : 'login' }},
      { path: '/', redirectTo: '/home' }
  ]);
  //
  setTimeout(function() {
    $scope.alex1 = 'salut111';
    console.log ($scope.currentUser); 
    $scope.$digest();
  }, 2000);
}

在不调用$ digest的情况下,alex1的值未在模板内更新。

1 个答案:

答案 0 :(得分:2)

问题不在Angular版本中,而是在setTimeout中,它在Angular摘要循环之外运行。您应该使用$timeout服务。