2013-08-16 27 views
2

我需要建立一个收集获取,但我需要通过这个集合不是由它的URL,但具体的Ajax调用里面去取。这是可能的,我想更好地解释:当一个集合都抓取,抓取使用集的URL在正常情况下,但我需要通过一个Ajax调用,而不是由URL使用的结果。集收藏与特定的Ajax调用

$.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调用的提取来创建我的集合。

+0

你能为我们提供一些代码,以便我们可以得到你想要完成什么更好的感觉? – kalley

回答

1

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

yourCollection.fetch({url: newUrl}) 

或者你可以用建筑这样的:

yourCollection.fetch = function(options) { 
    return this.constructor.__super__.fetch.call(this, _.extend({url: newUrl}, options)); 
}; 
如果你想覆盖抓取整个视图中呼吁 yourCollection,例如0

。然后,在这个视图中,您将能够只使用yourCollection.fetch()没有newUrl参数。

希望,这将是有用的为您服务。

1

选项1)覆盖当前集合中获取:

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,并覆盖这个新对象的提取。现在这个新的集合可以延长YourCollection而不是Backbone.Collection

PS如果你需要,你还可以修改Ajax调用:

var ajax = $.ajax; 

    $.ajax = function(url, options) { 
     //your code 
     return ajax.call(this, url, options); 
    }; 
+0

如果我想返回ajax结果? –