在AngularJS

时间:2015-06-24 15:41:19

标签: angularjs

我从服务器获取一个集合,我想获得每个项目的详细信息。所有请求都已正确接收,但段落加载...并不隐藏。

<h2 ng-repeat-start="server in hypervisors track by server.ip | orderBy:server.ip">
    {{server.ip}}
</h2>
<div ng-repeat-end>
    <p ng-hide="{{server.loaded}}" class="ng-hide">Loading...</p>

    

当我在发布之前取消注释控制器中的一行时,一切正常。

vmwareStatusApp.controller('Home', function ($scope, $http) {
    $http.post('Home/ListHypervisors').success(function (data) {
        $scope.hypervisors = data;
        $scope.listLoaded = true;

        $scope.hypervisors.forEach(function (item) {
            //item.loaded = true; // this line works
            $http.post('Home/HostInfo', { 'ip': item.ip }).success(function (data) {
                $scope.hypervisors[0].loaded = true;
                    item.loaded = true;
                    item.detail = data;
                })
                .error(function(data) {
                    item.loaded = true;
                    item.error = data;
                    item.displayError = true;
                });
        });
    });
});

有许多关于令人耳目一新的观点的帖子,但我还没有找到适合我的人。由于多次回调,调用$digest()的反模式都不起作用。我跳过哪部分AngularJS教程?

1 个答案:

答案 0 :(得分:2)

只需从您的ng-hide中删除大括号

即可
ng-hide="server.loaded"

ng-hide和angular指令应如下所示:

ng-directive = "somethingAngularWillInterpret"

相反的例子是你的HTML角度不知道他应该解释什么,而不是只显示一些文字

<b>server.loaded</b> will show a bold "server.loaded"

要注意他需要解释的角度,我们将使用大括号

<b>{{somethingAngularWillInterpret}}</b> will show a bold result of the interpretation

编辑:

这样做ng-hide =&#34; {{server.loaded}}&#34;可能会说angular来解释server.loaded解释的结果就像一个名为true的var或一个名为false的var(只是推测,我需要尝试)。

刚测试过,这只会导致语法错误。