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即可。