... fetch()和toJSON()响应不匹配

时间:2013-02-13 12:29:11

标签: javascript backbone.js backbone.js-collections

我正在使用集合网址进行服务调用。该服务返回一些json,json长度为13(总共13行数据)。

这里,this.Collection.fetch()返回长度为13的json。 但是this.Collection.toJSON()正在返回长度为12的json。 相反它应该返回长度13。

在集合解析中,响应返回json,其长度为13,这是正确的!

tableTemplate是模板的对象(模板使用Handlebars.js完成)。

this.Collection.fetch({         成功:function(){

        console.log("Collection Fetch 2:");
        console.log(this.Collection.fetch());

        console.log("Collection toJSON: ");
        console.log(this.Collection.toJSON());
        console.log(this.Collection.toJSON().length);


        var markup = tableTemplate({List:self.importCollection.toJSON()});
         ...
          ...
    }
});

1 个答案:

答案 0 :(得分:1)

这是javascript / backbone的异步性质

这样做:

this.collection.fetch();

//Fetch() is asynchronous call , when it completes fetching it triggers the **reset**   event so you need a event listener for **reset**

this.collection.on('reset',function(data){
console.log(data);                          // this will log the object
});

this.collection.on('reset',function(data){
console.log(JSON.stringify(data));        // This will log the JSON data  
});

或者你可以这样做:

this.collection.fetch({
success : function(){                      // called on completion of fetch()
console.log(data);       
console.log(JSON.stringify(data));  
}
});