在返回ajax请求时初始化数组

时间:2014-12-02 21:07:33

标签: angularjs

尝试学习角度我遇到了以下情况。

我的应用程序使用ASP.NET Web Api从复杂而缓慢的数据库返回产品对象。由于速度慢,我想寻找从服务器返回的对象。我创建了一个包含产品数组,当前页面和产品最后一页的viewmodel。

为了显示分页小部件,我想用一个pagenumbers数组填充我的$ scope对象,以便与ng-repeat指令一起使用。

我尝试使用函数填充数组:

(in pseudo)
$scope.pages = function(){
      var pageNumberArray = [];
      pagecounter = 1;     
      while (pagecounter <= maxPage){
          pageNumberArray.push(pageCounter);
          pageCounter++;
      }
};

在我的视图中使用此函数进行ng-repeat:

<ul>
    <li ng-repeat="pageNr in pages()">{{pageNr}}</li>
</ul>

它似乎适用于显示,但我的开发人员工具控制台显示看似合法的错误:[$ rootScope:infdig] 10 $ digest()迭代达成。中止!

如何在不从视图中调用$ scope函数的情况下初始化$ scope数组(字段)。

P.S。当ajax请求返回一个新页面时,该数组应重新初始化(并非显示所有页码(在当前页面上方5个下方,5个)。

1 个答案:

答案 0 :(得分:0)

我认为通过使用ng-repeat函数来干扰双向绑定。

我想说$ scope.pages应该是你范围内的一个变量。如果您稍后更新此变量,您的视图将通过双向绑定的宽限自动更新。

这样的事情:

控制器中的

$scope.pages = []
for (var i; i < maxPage; i += 1) {
    $scope.pages.push(i);
}
$http.get(...).success(data){
    // update $scope.pages
}

在视图中:

<div ng-repeat="page in pages">{{page}}</div>