以下是一个骨干岗位模型的样本:
var Post = Backbone.AssociatedModel.extend({
urlRoot: ApiService.resolveRESTUrl('posts'),
defaults: {
age : 0,
fname : "",
lname : "",
manager : null
},
relations:[
{
type:Backbone.One,
key:'User',
relatedModel: function(){ return $injector.get('UserModel') },
collectionType: function(){return $injector.get('UserModel').Collection; }
},
{
type:Backbone.Many,
key:'Last3Comments',
relatedModel:function(){ return $injector.get('CommentModel') },
collectionType:function(){ return $injector.get('CommentModel').Collection },
}
],
getTimeAgo:function() {},
getPicture:function(size){
return this.get('picture_url') ?
ApiService.getImageResizeUrl(this.get('picture_url'),'w'+size+'xh'+size) :
null;
},
});
当帖子加载时,如果任何lib在post数组中使用角度观察者(数据绑定为“=”) 然后我得到以下错误
错误:[$ rootScope:infdig] 10 $ digest()迭代达成。中止! 观察者在最近5次迭代中被解雇:[]
以及
RangeError:超出最大调用堆栈大小 在Array.toString(native)
我正在看这样的帖子:
$scope.posts=[];
$scope.$watch('posts', function(model) {
console.log($scope.posts, model);
},true);
$scope.loadPosts=function(){
if($scope.loading || $scope.disabled) return;
$scope.loading=true;
ApiService.request("posts/home",{page:$scope.page,limit:10}).success(function(data){
$scope.loading=false;
$scope.page++;
if(data.error){
alert('Error');
} else {
if(data.data.posts.length==0)
$scope.disabled=true;
$.each(data.data.posts,function(i,e){
var post=new PostModel(e);
$scope.posts.push(post);
});
}
}).error(function(){
alert('Error');
$scope.loading=false;
});
};
有没有人有任何想法?
答案 0 :(得分:1)
我解决了我的问题,使用angular的watchCollection而不仅仅是看,因为watchCollection用于观看数组。