BackBone 带参数的集合提取进行重复调用但不工作
BackBone collection fetch with parameter making duplicate call and not working
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");
}
} );
});
现在在路由器中,我正在创建骨干集合并通过传递 parameter/query 字符串来调用获取函数,例如 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 方法考虑到第一个 AJAX 调用返回空白 JSON 数组,由于缺少查询参数。
以下是firebug的截图。
请帮助我,我可以使用 $.getJson() 并初始化集合,但这不是正确的方法。
其实很简单。您的第一次提取是在初始化方法中 - 没有数据参数的方法:
, initialize: function(){
this.fetch({
success: this.fetchSuccess,
error: this.fetchError
});
},
然后你的第二个请求是当你用包含的数据参数实例化集合时。
所以你只需要去掉初始化中的fetch即可。
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");
}
} );
});
现在在路由器中,我正在创建骨干集合并通过传递 parameter/query 字符串来调用获取函数,例如 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 方法考虑到第一个 AJAX 调用返回空白 JSON 数组,由于缺少查询参数。
以下是firebug的截图。
请帮助我,我可以使用 $.getJson() 并初始化集合,但这不是正确的方法。
其实很简单。您的第一次提取是在初始化方法中 - 没有数据参数的方法:
, initialize: function(){
this.fetch({
success: this.fetchSuccess,
error: this.fetchError
});
},
然后你的第二个请求是当你用包含的数据参数实例化集合时。
所以你只需要去掉初始化中的fetch即可。