ajax请求准备就绪后显示AngularJS ng

ajax请求准备就绪后显示AngularJS ng,angularjs,Angularjs,我正在发送请求,在我收到数组后,我需要提供答案。若数组为空,我需要显示一个代码,否则-另一个代码 现在,我的模板加载速度比请求快,所以显示“数组为空”条件的部分。如何等待请求完成 // Template <div ng-show="!!arr.length"> // I need to check this after request is finished. <div ng-repeat="(key, val) in arr"> ... <

我正在发送请求,在我收到数组后,我需要提供答案。若数组为空,我需要显示一个代码,否则-另一个代码

现在,我的模板加载速度比请求快,所以显示“数组为空”条件的部分。如何等待请求完成

// 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

});
//模板
//我需要在请求完成后检查这个。
...
空的
//控制器
$scope.arr=[];
$http.get('url')。然后(函数(响应){
if(response)$scope.arr=响应;
//显示还是隐藏
});

$scope.arr
变量保留为未定义,仅在实际收到数组后定义它

然后在模板中使用此选项:

<div ng-show="arr.length > 0">
    ...
</div>
<div ng-show="arr.length == 0"></div>
    Empty
</div>

...
空的
如果
arr
未定义,则这两个条件都将无效

当然,您也可以引入一个布尔变量,一旦响应可用,如果您觉得更清楚的话,它就被设置为true


或者,可能是最好的解决方案,使用其
resolve
配置选项仅在阵列可用时切换到页面。

$scope.arr
变量保留为未定义,并且仅在实际收到阵列后定义它

然后在模板中使用此选项:

<div ng-show="arr.length > 0">
    ...
</div>
<div ng-show="arr.length == 0"></div>
    Empty
</div>

...
空的
如果
arr
未定义,则这两个条件都将无效

当然,您也可以引入一个布尔变量,一旦响应可用,如果您觉得更清楚的话,它就被设置为true


或者,可能是最好的解决方案,使用其
resolve
配置选项,仅在阵列可用时切换到页面。

两个
ng show
上的表达式相同。更改第二个div上的表达式,或将
ng show=
更改为
ng hide=
两个
ng show
上的表达式相同。更改第二个div上的表达式,或从
ng show=
更改为
ng hide=
Super!很酷的解决方案,对我很有效。非常感谢。它对我不起作用,首先它会显示空消息,即使数组中有一些项目,之后它会显示数组项目。超级!很酷的解决方案,对我很有效。非常感谢。它对我不起作用,首先它会显示空消息,即使数组中有一些项,后来它会显示数组项。