我发送请求,在我收到数组后,我需要回答。如果array为空,我需要显示一个代码,否则 - athother code。
现在我的模板加载速度快于请求所以显示部分"数组为空"条件。如何等待请求完成?
// Template
<div ng-show="!!arr.length"> // I need to check this after request is finished.
<div ng-repeat="(key, val) in arr">
...
</div>
</div>
<div ng-show="!!arr.length" class="ng-hide"></div>
Empty
</div>
// Controller
$scope.arr = [];
$http.get('url').then(function (response) {
if(response) $scope.arr= response;
// ng-show or ng-hide
});
答案 0 :(得分:4)
将$scope.arr
变量保留为undefined,并仅在实际接收到数组后定义它。
然后在模板中使用它:
<div ng-show="arr.length > 0">
...
</div>
<div ng-show="arr.length == 0"></div>
Empty
</div>
如果arr
未定义,则两个条件都将是假的。
当然,如果你觉得它更清楚,你还可以引入一个布尔变量,一旦响应可用就设置为true。
或者,可能是最好的解决方案,configure your route只能在阵列可用后切换到页面,使用其resolve
配置选项。