我有一个元素列表,仅当不为null和empty时才要显示,为此,我在ng-repeat块之前放置了ng-if:
<tbody ng-if="adsNotEmpty">
<!-- Start: list_row -->
<tr ng-repeat="ad in ads">
<td>{{$index + 1}}</td>
<ad-thumbnail ad="ad"/>
</tr>
<!-- End: list_row -->
</tbody>
为此,我有一个控制器代码,该代码可评估广告列表并设置adsNotEmpty var:
controllers.controller('AdCtrl', ['$scope', 'AdService',
function($scope, AdService) {
$scope.ads = AdService.query();
$scope.adsNotEmpty = ($scope.ads && $scope.ads.length > 0);
}]);
我有一个RESTful网络服务,该服务当前返回HTTP 200 OK状态且响应为空,即使adsNotEmpty结果为false,代码仍会输入ad-thumbnail指令中:
ad-thumbnail指令内容:
<td>
AD - {{ad.name}}
</td>
即使广告列表为空,生成的HTML最终也会在屏幕上显示广告-。
产生的对象来自
$scope.ads = AdService.query();
显示在调试:
Array[0]
$promise: Object
$resolved: false
length: 0
__proto__: Array[0]
上面的代码可能有什么问题,以防止angular呈现ad-thumbnail指令?
我在这里发布解决方案以供参考:
在控制器中:
controllers.controller('AdCtrl', ['$scope', 'AdService',
function($scope, AdService) {
AdService.query(function(data) {
$scope.ads = data;
$scope.adsNotEmpty = ($scope.ads.length > 0);
});
并在页面中:
<tbody>
<!-- Start: list_row -->
<tr ng-repeat="ad in ads">
<td ng-if="adsNotEmpty">{{$index + 1}}</td>
<ad-thumbnail ad="ad" ng-if="adsNotEmpty"/>
</tr>
<!-- End: list_row -->
</tbody>
该log
你表演,你是不是看什么你应该。$promise
在查找数据之前,您需要链接查询返回的内容。
AdService.query().$promise.then(function(data) {
$scope.ads = data;
$scope.adsNotEmpty = ($scope.ads && $scope.ads.length);
});
ng-repeat
在tha实例遍历Query
hance返回的对象的属性时,您会看到空白AD-
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句