尝试学习角度我遇到了以下情况。
我的应用程序使用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个)。
答案 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>