javascript - 在 Web 服务标注后使用带有数组长度的 ng-show

标签 javascript angularjs

如果数组的大小为 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/

相关文章:

javascript - 插入新数据时实时刷新

javascript - 定义后无法将可选参数传递给 express

javascript - 如何拖放表格?

javascript - AngularJS 自定义指令丢失根属性

javascript - 无法使用 Angular Js 在动态插入 View 中显示对象数组值

javascript - 根据文本内容重新排列 DOM 元素

angularjs - 使用ui-router解析时,如何访问解析后的数据?

javascript - Facebook 分享的帖子显示单词 "object"如何删除该单词

javascript - AngularJS: View 完全加载后的 DOM 操作

javascript - 无法打开 jQueryUI 对话框