2013-02-14 84 views
0

嗨,我有一個JSON文件看起來像這樣:主幹我怎麼能一個JSON文件中的一部分加載到一個集合

{ 
"links_1": [ 
    { 
     "navn": "somename", 
     "link": "http://www.domane.com" 
    }, 
    { 
     "navn": "somename", 
     "link": "http://www.domane.com" 
    }, 
    { 
     "navn": "somename", 
     "link": "http://www.domane.com" 
    } 
], 
"links_2": [ 
    { 
     "navn": "someothername", 
     "link": "http://www.domane.com" 
    }, 
    { 
     "navn": "someothername", 
     "link": "http://www.domane.com" 
    }, 
    { 
     "navn": "someothername", 
     "link": "http://www.domane.com" 
    } 
] 
} 

然後,我有我的集合類。 現在我想創建一個只包含json文件中links_1數組的新集合。 另一個包含json文件中links_2數組的新集合。

我該如何做到這一點?

var col = new Collection(Collection.prototype.parse = function(response){ 
return response.links_1; 
} 

所以爲了進一步說明,我想我的獲取獲取特定的json數據對象。

var col = new Collection(); 
col.fetch(links_1); // here i only want to get links_1 json data 

var col2 = new Collection(); 
col2.fetch(links_2); // here i only want to get links_2 json data 

任何幫助將是偉大的。

+0

爲什麼不迭代集合並將每個「鏈接」分配給新的集合變量? col.forEach(function(model,index){col = new Collection(model);}) – 2013-02-14 07:22:30

+0

如何在請求時提供適當的內容?你只應該得到收集需要的東西。 – mpm 2013-02-14 07:39:26

回答

1

你在正確的軌道上嘗試覆蓋parse,你只是做錯了。嘗試:

//define a collection class 
var Link1Collection = Backbone.Collection.extend({ 
    parse:function(response) { 
    return response.links_1 
    } 
}); 

//initialize a new instance of your collection class and fetch 
var collection = new Link1Collection(); 
collection.fetch(); 

編輯:要選擇要提取的實例,以實例爲基礎的領域,你可以在fetch選擇通過自定義選項。選項傳遞到parse

//define a collection class 
var LinkCollection = Backbone.Collection.extend({ 
    parse:function(response, options) { 
    return options.parseField ? response[options.parseField] : response; 
    } 
}); 

//initialize a new instance of your collection class and fetch 
var collection = new LinkCollection(); 
collection.fetch({parseField:'links_1'}); 
+0

我知道使用fetch獲取解析響應,但我的問題是關於在解析函數中獲取完整的json數據。然後在提取中僅顯示它的一部分。 像這樣: 變種Link1Collection = Backbone.Collection.extend({ 解析:功能(響應){ 返回響應; //我希望所有速效JSON數據這裏 } }); //初始化您的集合類的新實例並獲取 var collection = new Link1Collection(); collection.fetch(response.links_1); var collection2 = new Link1Collection(); collection.fetch(response.links_2); – 2013-02-14 07:53:46

+0

@ MarcelHuss-Nielsen編輯。 – jevakallio 2013-02-14 08:08:31

+0

可能只是我,我新的骨幹 - 但使用你的上述方法,即時通訊只獲得1個對象返回。而不是來自json文件的數據數組。也許我需要做一些toJSON();在解析的響應? parse:function(response,options){ return options.parseField?響應[options.parseField]:響應; } – 2013-02-14 08:37:29

相關問題