骨干模型可以与角度一起使用吗?

时间:2014-10-14 06:49:57

标签: javascript angularjs backbone.js

以下是一个骨干岗位模型的样本:

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;
    });
};

有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

我解决了我的问题,使用angular的watchCollection而不仅仅是看,因为watchCollection用于观看数组。