2013-08-16 63 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結果? –