【问题标题】:is there an AngularJS version of jQuery's document ready是否有 AngularJS 版本的 jQuery 文档准备好
【发布时间】:2013-01-10 08:51:11
【问题描述】:

我是 Angular 的新手,并且能够创建一个基本页面,该页面创建了一个人员列表,其中包含一些允许您选择他们的复选框。

See this fiddle

问题是当我将 getAllPeople 函数更改为从数据库中提取时

 $http.post('angular.cfc?method=returnSerializeQuery').success(function(data) {
       $scope.allPeople = data;
     });

不是在 js 中构建数组,而是 html 快速加载并加载空白列表。如果我然后搜索列表显示。我知道 $http 调用速度太慢,无法跟上文档的加载速度。

我必须使用 $timeout,但我似乎无法让它工作,因为数据集有时可能需要比其他时间更长的时间。如果有 $(document).ready() 的 Angular 版本,我似乎找不到它。

我也猜测,由于这是我的第一个功能齐全的页面,我还没有完全正确地设置它,这可能与它有关。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    如果想法是延迟页面呈现,直到从服务器获取数据,你有很好的答案(和示例)herehere

    主要思想:

    function Ctrl($scope) {    
        $scope.data = {};
    }
    
    Ctrl.resolve = {
        data: function($http) {
            return $http({method: 'GET', url: '/path/to/some/data'});
        }
    };
    
    var myApp = angular.module('app', [], function($routeProvider) {
        $routeProvider.when('/', {
            templateUrl: '/template.html',
            controller: Ctrl,
            resolve: Ctrl.resolve
        });
    });​
    

    同时检查这个工作示例:http://jsfiddle.net/dTJ9N/54/

    【讨论】:

      【解决方案2】:

      在您的 post().success 回调函数中,在 $scope.allPeople = data; 之后添加 $scope.groupToPages(),因为 ng-repeat 正在观看 pagedItems,而不是 allPeople

      【讨论】:

      • 好的,您还有另一个 $scope 属性需要更新:在 $scope.groupToPages() 之前添加 $scope.filteredPeople = $scope.allPeople;。工作 fiddle -- 我添加了 $timeout 来模拟 HTTP 延迟。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 2011-12-29
      相关资源
      最近更新 更多