2

我需要创建一个集合,但我需要通过这个集合而不是它的 url 而是内部的特定 ajax 调用来获取。这可能吗?我试图更好地解释:在正常情况下,当通过集合获取时,获取使用集合中的 url,但我需要通过 ajax 调用而不是通过 url 使用结果。

$.ajax({
type: 'GET',
headers: {'X-Parse-Application-Id':'qS0KLM***EM1tyhM9EEPiTS3VMk','X-Parse- 
REST-API-Key':'nh3eoUo9G8Df****vbF2gMhcKJIfIt1Gm'},
url: "https://api.parse.com/1/classes/_User/",

data: 'where={"amici": 
{"__type":"Pointer","className":"_User","objectId":"g0fRKnrgZN"}}',//restituisce chi ha   
negli amici l'id objectId
//contentType: "application/json",

success: function(data) {
      console.log(data );

    },
    error: function(data) {

      console.log("ko" );
    }



});

我需要通过基于此 ajax 调用的 fetch 创建我的集合。

4

2 回答 2

1

选项 1)覆盖当前集合中的 fetch:

fetch: function(options) {
            // your extra code
            //..
            // maintain the return below if want to preserve the original fetch
            //return Backbone.Collection.prototype.fetch.call(this, options);
},

选项 2)如果您想将其用于所有收藏:

扩展Backbone.Collection到一个新对象YourCollection,并在这个新对象中覆盖 fetch。现在您的新收藏可以扩展 YourCollection 而不是Backbone.Collection

PS如果需要,也可以修改ajax调用:

    var ajax = $.ajax;

    $.ajax = function(url, options) {
       //your code
       return ajax.call(this, url, options);
    };
于 2013-08-17T01:14:38.800 回答
1

您可以通过这种方式覆盖 fetch 调用的任何选项:

yourCollection.fetch({url: newUrl})

或者你可以使用这样的构造:

yourCollection.fetch = function(options) {
    return this.constructor.__super__.fetch.call(this, _.extend({url: newUrl}, options));
};

例如,如果您想yourCollection在整个视图中覆盖 fetch 调用。然后在此视图中,您将能够yourCollection.fetch()不带newUrl参数地使用。

希望,对你有用。

于 2013-08-22T15:06:40.200 回答