首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么这个简单的AngularJS ng-show不能工作?

为什么这个简单的AngularJS ng-show不能工作?
EN

Stack Overflow用户
提问于 2014-04-05 21:15:15
回答 6查看 81.3K关注 0票数 45

我不明白为什么我的简单的AngularJS应用程序不能像预期的那样工作。“正在加载...”应该是隐藏的,并且“完成!”应在1秒后显示。

html:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
function TestCtrl($scope) {
    $scope.loading = true;
    setTimeout(function () {
        $scope.loading = false;
    }, 1000);
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-04-05 21:19:18

你需要告诉angular你已经更新了var:

代码语言:javascript
复制
function TestCtrl($scope) {
    $scope.loading = true;
    setTimeout(function () {
        $scope.$apply(function(){
            $scope.loading = false;
        });
    }, 1000);
}

或者只是

代码语言:javascript
复制
function TestCtrl($scope, $timeout) {
    $scope.loading = true;
    $timeout(function () {
        $scope.loading = false;
    }, 1000);
}
票数 63
EN

Stack Overflow用户

发布于 2014-07-08 22:56:08

一种更好的方法是调用$scope.$digest();来更新UI

票数 14
EN

Stack Overflow用户

发布于 2014-04-05 21:18:58

您需要使用$timeout并将其注入到控制器中:

代码语言:javascript
复制
function TestCtrl($scope, $timeout) {
    $scope.loading = true;
    $timeout(function () {
        $scope.loading = false;
    }, 1000);
}

Fiddle demo

编辑:根据@Salman的建议删除了$scope.apply();

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22881374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档