Angular:使用$ scope传输数据

时间:2015-07-23 04:56:24

标签: angularjs

真的不知道为什么这不起作用。我必须做一些非常愚蠢的事情。

这是一个控制器:

angular.module('nightlifeApp')
    .controller('TestCtrl', function($scope) {
        $scope.testvar = 'before';
        setTimeout(function() {
            $scope.testvar = 'after';
        }, 2000);
    });

以下是将其作为控制器的视图:

h1(ng-bind='testvar')
h1 {{testvar}}

但是h1元素都没有变化!有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是setTimeout,那么您需要手动触发apply。像

  

$ apply()用于从外部执行角度表达式   角度框架。 (例如,来自浏览器DOM事件,   setTimeout,XHR或第三方库)。因为我们正在呼唤   我们需要执行适当范围生命周期的角度框架   异常处理,执行手表。

setTimeout(function() {
      $scope.$apply(function() {
        $scope.testvar = 'after';
      });
}, 2000);

在我看来,您应该使用$timeout服务。因此它会自动触发$apply()。您的代码看起来像

$timeout(function () {
   $scope.testvar = 'after';
}, 2000);

确保您已在控制器中注入$timeout服务。在您的HTML中,您不需要使用ng-bind。你在控制器中做同样的事情。仅

<h1> {{testvar}} </h1>