3
{ 
    "code":"OK", 
    "message":"Success", 
    "errorFlag":"N", 
    "errors":null, 
    "data": { 
     "images": { 
      0: img0, 
      1: img1, 
      2: img2 
     } 
    } 
} 

此創建一個集合多種型號是REST響應,我希望把「影像」記錄我的收藏和對待每一個人記錄的車型。BackboneJs:從嵌套對象

var Image.Model = Backbone.Model.extend({}); 
var Image.Collection = Backbone.Collection.extend({ 
    model: Image.Model, 
    url: 'rest/url' 
}); 
var images = new Image.TestCollection(); 
images.fetch(); 

我怎樣才能讓「圖像」裏面的記錄是圖像集合的唯一模式,把代碼,郵件,錯誤等鍵,另一個模型或集合?

謝謝。

+1

http://stackoverflow.com/questions/8782619/how-to-build-a-collection-model-from-nested-json-with-backbone-js –

回答

2

使用http://backbonejs.org/#Collection-parse

// server.js 
app.get('/api/data', function (req, res) { 
    var result = { 
     "code": "OK", 
     "message": "Success", 
     "errorFlag": "N", 
     "errors": null, 
     "data": { 
      "images": { 
       0: "img0", 
       1: "img1", 
       2: "img2" 
      } 
     } 
    }; 
    res.json(result); 
}); 

// client.js 
var Image = Image || {}; 
Image.Model = Backbone.Model.extend({ 
}); 

Image.TestCollection = Backbone.Collection.extend({ 
    model: Image.Model, 
    url: '/api/data', 
    parse: function(response) { 
     window.response =response; 
     var images= []; 
     for(var key in response.data.images){ 
      if(response.data.images.hasOwnProperty(key)){ 
       images.push(response.data.images[key]); 
      } 
     } 
     return images; 
    } 
}); 
var images = new Image.TestCollection(); 
images.fetch(); 

附:將數據存儲在密鑰中通常是個不好的主意。

+0

謝謝,它的工作。爲什麼將數據存儲在密鑰中是一個壞主意?在這種情況下,我們只在解析函數中使用它。 – Barry

+1

這不是一個刻骨銘心的規則,但從我的經驗存儲在鍵中,特別是使用數字作爲鍵是PITA操縱數據,(在我的情況下,下劃線是一個巨大的幫助),再加上如果你使用數字作爲鍵例如,你不能使用點符號像圖像0。因此,將圖像從{0:「img0」,1:「img1」}更改爲[{「id」:「0」,「name」:「img0」},{「id」:「1」 ,「name」:「img1」}]但最終決定取決於您的需求。 –

+0

明白了你的觀點,謝謝! – Barry