Backbone模型
define('PreferedDealerAddress.Model', function (){
'use strict';
return Backbone.Model.extend( {
urlRoot: '/c.3927030/mazda-mstore-checkout-1-0/service/PreferedDealerAddress.ss'
} );
});
背骨收集
define('PreferedDealerAddress.Collection', ['PreferedDealerAddress.Model'], function (Model)
{
'use strict';
return Backbone.Collection.extend(
{
model: Model
, url: '../mazda-mstore-checkout-1-0/service/PreferedDealerAddress.ss'
, initialize: function(){
this.fetch({
success: this.fetchSuccess,
error: this.fetchError
});
},
fetchSuccess: function (collection, response) {
console.log('Collection fetch success', response);
console.log('Collection models: ', collection.models);
},
fetchError: function (collection, xhr, options) {
console.log(xhr.responseText);
throw new Error("Books fetch error");
}
} );
});
现在在路由器中我创建了后骨骼集合并通过传递参数/查询字符串来调用fetch函数,如belwo
var search_params = {
'zip': zip
};
new PreferedDealerAddress.Collection().fetch({data: $.param(search_params)});
但它正在制作两个AJAX调用,第一个是 /mazda-mstore-checkout-1-0/service/PreferedDealerAddress.ss /mazda-mstore-checkout-1-0/service/PreferedDealerAddress.ss?zip=92618
和fetch方法考虑到由于缺少查询参数而返回空白JSON数组的第一个AJAX调用。
以下是firebug的截图。
请帮助我,我可以使用$ .getJson()并初始化集合,但这不是正确的方法。
答案 0 :(得分:1)
实际上非常简单。您的第一次提取是在initialize方法中 - 没有数据参数的方法:
, initialize: function(){
this.fetch({
success: this.fetchSuccess,
error: this.fetchError
});
},
然后你的第二个请求就是当你使用数据参数实例化Collection时。
所以你只需要摆脱初始化中的提取。