将骨干模型属性值设置为另一个模型

时间:2012-05-15 19:58:53

标签: javascript backbone.js

我可以将另一个骨干模型设置为其属性吗?

我有一个代表基本实体的模型,我希望将其重新用作其他内容的一部分。 但是,看起来Backbone的模型属性值只能是String。

3 个答案:

答案 0 :(得分:2)

排序答案:是的,您可以

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

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

但是这样说,我认为在模型中声明真实属性没有任何问题,这些属性引用了以下对象:

myHouse.door = new Door();

答案 1 :(得分: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

答案 2 :(得分: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()

上的人口为[]