2014-01-27 59 views
2

我在一個項目中需要從服務器獲取一些數據並從中創建一個Backbone集合。下面的代碼按預期工作:Backbone集合提取 - 指向特定的JSON屬性

var Collection = Backbone.Collection.extend({}); 
var collection = new Collection({}); 
collection.fetch({ 
    url: "http://localhost/api/somecollection", 
    success: function(response) { 
     // Do something here 
    }  
}) 

,結果是這樣的:

{ 
    foo: "lorem ipsum", 
    bar: [{ 
     a: "a", 
     b: "b", 
     c: "c" 
    }, { 
     a: "a", 
     b: "b", 
     c: "c" 
    }] 
} 

的「欄」屬性是我想變成一隻BB收集什麼。我真正做到這一點通過獲取響應和實例化一個新的系列,其型號有:

success: function(response) { 
    var newCollection = new Collection(response.models[0].attributes.bar); 
} 

我想在這裏做的是避免了收集的新實例,只有一個就足夠了。而且我無法更改服務器響應以返回我只需要的數組。

問題:有沒有辦法提供一個參數來「獲取」,因此它可以引用「酒吧」道具?

回答

7

覆蓋Colletion.parse來定製您的收藏如何處理您的服務器響應:

var Collection = Backbone.Collection.extend({ 
    parse: function (resp) { 
     return resp.bar; 
    } 
}); 
var collection = new Collection(); 
collection.fetch({ 
    url: "http://localhost/api/somecollection" 
});