0
在我的申請,我有以下的JSON數據格式:如何初始化嵌套Backbone.js的車型
{
Item: {
property1: '',
...
}
}
繼this stackoverflow.com答案的解決方案,我模仿我Backbond.js模型通過以下方式:
App.Models.Item = Backbone.Model.extend({
});
App.Models.ItemData = Backbone.Model.extend({
defaults: {
'Item': new App.Models.Item
}
});
我現在想從頁面上的後端系統bootstap數據,以我的應用程序加載方式如下:
var item = App.Models.ItemData({
{Item:
{property1: 'data'}
}
});
我現在的問題是,item.get('Item')
返回一個普通的JavaScrip對象,而不是Backbone.Model對象,因爲默認值被覆蓋。 如何在確保item.get('Item')
是App.Models.Item對象時創建Backbone.js對象?
我也讀過,如果你嵌套Backbone.Models,你應該wirite自定義getter方法,所以你的應用程序的其餘部分不必知道內部數據結構。如果是這樣,那麼執行這些制定者和獲得者的正確方法是什麼?
感謝您的快速反應!只有兩個小問題:1.爲什麼我們需要「attrs = attrs ||」 {};'? 2.我不得不將'if(!attrs.Item instanceof App.Models.Item)'改成'if(!(attrs.Item instanceof App.Models.Item))'來工作。那裏發生了什麼? – wowpatrick
@wowpatrick,如果有人向方法傳遞一個null/undefined值,那麼'attrs'到'{}'的默認值就是一個警戒,在這種情況下,屬性訪問'attrs.Item'會導致錯誤。你也可以做'if(attrs){...}'但這是我通常這樣做的。 – jevakallio
還在'instanceof'檢查中添加了缺失的括號,對此感到抱歉。如果沒有參數,首先會評估'!attrs.Item',並返回一個布爾值,該值從來就不是'instanceof'。 – jevakallio