如果数组的大小为 0,我试图显示一个警告框。该数组由 Web 服务调用填充,因此在 Controller 加载时为 0。当 promise 得到解决时,数组将被填充,但警报仍保留在页面上。
promise 完成后如何更新警报的 View 状态?这是我到目前为止所拥有的:
<div class="alert alert-danger" ng-show="!items.length">You have no items.</div>
profile.controller('myController', ['$scope', '$http', '$window',
function($scope, $http, $window) {
$http.get('/api/getItems').success(function(data) {
$scope.items = data;
});
}
]);
这是回复:
[{"test" : "data"}]
当我尝试使用 apply 函数时,出现进行中错误:
Error: [$rootScope:inprog] http://errors.angularjs.org/1.2.18/$rootScope/inprog?p0=%24digest
$http.get('/api/getItems').success(function(data) {
$scope.$apply(function () {
$scope.items = data;
});
});
当 Controller 加载时,我最终只是对 items 数组进行了硬编码...div 仍然显示。
最佳答案
我的猜测是您正在使用 jQuery 中的 $.get 。尝试使用 $http 来代替 Promise 并更新 ui。
profile.controller('myController', ['$scope', '$http', '$window', function($scope, $http, $window) {
$http.get('/api/getItems')
.success(function(data) {
$scope.items = data;
});
});
关于javascript - 在 Web 服务标注后使用带有数组长度的 ng-show,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24577943/