我从服务器获取一个集合,我想获得每个项目的详细信息。所有请求都已正确接收,但段落加载...并不隐藏。
<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教程?
答案 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(只是推测,我需要尝试)。
刚测试过,这只会导致语法错误。