真的不知道为什么这不起作用。我必须做一些非常愚蠢的事情。
这是一个控制器:
angular.module('nightlifeApp')
.controller('TestCtrl', function($scope) {
$scope.testvar = 'before';
setTimeout(function() {
$scope.testvar = 'after';
}, 2000);
});
以下是将其作为控制器的视图:
h1(ng-bind='testvar')
h1 {{testvar}}
但是h1元素都没有变化!有什么想法吗?
答案 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>