属性として別のバックボーン モデルを設定できますか?
基本的なエンティティを表すモデルがあり、それを別のものの一部として再利用したいと考えています。しかし、バックボーンのモデル属性値は文字列しかないようです。
属性として別のバックボーン モデルを設定できますか?
基本的なエンティティを表すモデルがあり、それを別のものの一部として再利用したいと考えています。しかし、バックボーンのモデル属性値は文字列しかないようです。
答えを並べ替える:はい、できます:
myHouse.set({ door: new Door() })
しかし、私の意見では、そうすることは良い考えではありません。なぜなら、Backboneがで見つかることを期待しているとは思わないからObjects
ですModel.attributes
。私は試しませんでしたが、属性Model.toJSON
の誰かがオブジェクトである場合、のようなメソッドが正しい動作をすることはないと思います。
しかし、そうは言っても、次のようなオブジェクトを参照するモデルで実際の属性を宣言するのに問題はありません。
myHouse.door = new Door();
別のモデルの属性への設定のもう 1 つのバリエーションはBackbone.Model
、デフォルト値として設定することです。
var UserModel = Backbone.Model.extend({
defaults: {
id: null,
name: null,
address: new AddressModel()
}
});
var someUser = new UserModel();
someUser.address.set('country', 'ZA');
someUser.save()
で囲まれたデータを実行しているときはsomeUser.attributes.address
、通常のデータ オブジェクトになります。
!私がまだテストしていないことの1つAddressModel
は、上の人口ですsomeUser.fetch()
私が正しく理解していれば、次のようなことをする必要があります:
var ModelOne = Backbone.Model.extend({
method : function() {
console.log('ModelOne > method');
},
sayHello : function() {
console.log('ModelOne > hello');
}
});
var ModelTwo = ModelOne.extend({
method : function() {
ModelOne.prototype.method.apply(this);
console.log('ModelTwo > method');
}
});
var methodTwo = new ModelTwo();
methodTwo.method();
methodTwo.sayHello();
出力:
ModelOne > method
ModelTwo > method
ModelOne > hello