1

属性として別のバックボーン モデルを設定できますか?

基本的なエンティティを表すモデルがあり、それを別のものの一部として再利用したいと考えています。しかし、バックボーンのモデル属性値は文字列しかないようです。

4

3 に答える 3

2

答えを並べ替える:はい、できます

myHouse.set({ door: new Door() })

しかし、私の意見では、そうすることは良い考えではありません。なぜなら、Backboneがで見つかることを期待しているとは思わないからObjectsですModel.attributes。私は試しませんでしたが、属性Model.toJSONの誰かがオブジェクトである場合、のようなメソッドが正しい動作をすることはないと思います。

しかし、そうは言っても、次のようなオブジェクトを参照するモデルで実際の属性を宣言するのに問題はありません。

myHouse.door = new Door();
于 2012-05-15T20:21:21.040 に答える
0

別のモデルの属性への設定のもう 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()

于 2015-08-12T11:47:15.477 に答える
0

私が正しく理解していれば、次のようなことをする必要があります:

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
于 2012-05-15T20:16:39.833 に答える