使用参数进行BackBone集合提取重复调用而不工作

时间:2015-03-10 17:43:40

标签: javascript ajax json backbone.js

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的截图。 enter image description here

请帮助我,我可以使用$ .getJson()并初始化集合,但这不是正确的方法。

1 个答案:

答案 0 :(得分:1)

实际上非常简单。您的第一次提取是在initialize方法中 - 没有数据参数的方法:

, initialize: function(){
        this.fetch({
            success: this.fetchSuccess,
            error: this.fetchError
        });
    },

然后你的第二个请求就是当你使用数据参数实例化Collection时。

所以你只需要摆脱初始化中的提取。