我不明白为什么我的简单的AngularJS应用程序不能像预期的那样工作。“正在加载...”应该是隐藏的,并且“完成!”应在1秒后显示。
html:
<div ng-app>
<div ng-controller="TestCtrl">
<div class="text-center" ng-show="loading">
<h1>Loading...</h1>
</div>
<div class="text-center" ng-show="!loading">
<h1>Done!</h1>
</div>
</div>
</div>
Javascript:
function TestCtrl($scope) {
$scope.loading = true;
setTimeout(function () {
$scope.loading = false;
}, 1000);
}
发布于 2014-04-05 21:19:18
你需要告诉angular你已经更新了var:
function TestCtrl($scope) {
$scope.loading = true;
setTimeout(function () {
$scope.$apply(function(){
$scope.loading = false;
});
}, 1000);
}
或者只是
function TestCtrl($scope, $timeout) {
$scope.loading = true;
$timeout(function () {
$scope.loading = false;
}, 1000);
}
发布于 2014-07-08 22:56:08
一种更好的方法是调用$scope.$digest();
来更新UI
发布于 2014-04-05 21:18:58
您需要使用$timeout
并将其注入到控制器中:
function TestCtrl($scope, $timeout) {
$scope.loading = true;
$timeout(function () {
$scope.loading = false;
}, 1000);
}
编辑:根据@Salman的建议删除了$scope.apply();
https://stackoverflow.com/questions/22881374
复制相似问题