13

バックボーンを学んでいます。

さまざまな属性を持つさまざまなモデルを含むリストを作成したいと考えています。

たとえば、ファイル タイプのモデルとフォルダ タイプのモデルを含むフォルダ コンテンツを任意の順序でリストします。

file : {
  title : "",
  date : "",
  type : "",
  yaddayadda : ""
}

folder : {
  title : "",
  date : "",
  haminahamina : ""
}

バックボーンでこれを表現する適切な方法は何ですか? 単一のコレクションに複数のモデルを含めることはできますか?

4

4 に答える 4

26

他のモデルが継承するベースモデルを作成します。

var DataModel = Backbone.Model.extend({
    // Whatever you want in here
});

var FileModel = DataModel.extend({
    // Whatever you want in here
});

var FolderModel = DataModel.extend({
    // Whatever you want in here
});

そしてmodel、コレクションのタイプを同じベースモデルにします。

var DataCollection = Backbone.Collection.extend({
    model: DataModel
});
于 2013-01-10T17:47:24.497 に答える
1

この場合、バックボーンのドキュメントは完全ではありません。merge:trueオプション と を併用すると機能しませんidAttribute。その場合、次のことを行う必要があります。

var ModelFactory = function (attr, options) {
  switch (attr.type) {
    case 'file':
      return new file(attr, options);
    case 'folder':
      return new folder(attr, options);
  }
};
ModelFactory.prototype.idAttribute = '_id';

var fs = Backbone.Model.extend({
   model: ModelFactory
});
于 2016-02-24T13:32:45.060 に答える