簡體   English   中英

如何處理嵌套在RelationalModel中的集合?

[英]How to deal with a collection nested in a RelationalModel?

我使用Backbone-Relational創建一個復雜的模型層次結構,代碼如下所示:

var ModelA = Backbone.Model.extend({
    initialize: function () {
        console.log('model a initialized!')
    }
});

var CollectionA = Backbone.Collection.extend({
    model: ModelA
});

var ModelB = Backbone.RelationalModel.extend({
    relations: [{
        type: Backbone.HasMany,
        key: 'Collection',
        collectionType: CollectionA
    }]
});

var data = new ModelB({
    name: 'ModelB',
    Collection: [{
        name: 'ModelA-1'
    }, {
        name: 'ModelA-2'
    }]
});

console.log(data.get('Collection').at(0) instanceof ModelA); // false
console.log(data.get('Collection').at(0) instanceof ModelB); // true
console.log(JSON.stringify(data.toJSON())); 
// {"name":"ModelB","Collection":[{"name":"ModelA-1","Collection":[]},{"name":"ModelA-2","Collection":[]}]}

正如你看到的,即使ModelB創建成功后, initialize()ModelA不叫。 檢查類型可證明集合內的對象不是ModelA 我怎樣才能解決這個問題?

必需進行兩項更改:使ModelA成為RelationalModel (而不僅僅是標准模型),並告訴ModelB ModelA是它的relatedModel ,如下所示:

var ModelA = Backbone.RelationalModel.extend({
    initialize: function () {
        console.log('model a initialized!')
    }
});
...

var ModelB = Backbone.RelationalModel.extend({
    relations: [{
        type: Backbone.HasMany,
        relatedModel: 'ModelA',
        key: 'Collection',
        collectionType: CollectionA
    }]
});

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM