在ajax请求准备好后,AngularJS ng-show

时间:2015-06-17 11:38:14

标签: angularjs

我发送请求,在我收到数组后,我需要回答。如果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

});

1 个答案:

答案 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配置选项。