1

我可以设置另一个主干模型作为它的属性吗?

我有一个代表基本实体的模型,我想将它作为其他东西的一部分重用。但是,Backbone 的模型属性值似乎只能是字符串。

4

3 回答 3

2

排序答案:是的,您可以

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

但是,在我看来,这样做并不是一个好主意,因为我不认为 Backbone 期望ObjectsModel.attributes. 我没有尝试,但如果属性中的某个人是对象,我认为像这样的方法Model.toJSON不会有正确的行为。

但是这么说,我认为在模型中声明引用对象的真实属性没有任何问题,例如:

myHouse.door = new Door();
于 2012-05-15T20:21:21.040 回答
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 回答
0

设置另一个模型的属性的另一种变体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将是一个通常的数据对象


!尚未测试的一件事AddressModel是人口someUser.fetch()

于 2015-08-12T11:47:15.477 回答