2012-05-15 189 views

回答

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

排序答案:是的,你可以

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

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

但这么说,我看不出有什么问题,申报示范真实属​​性,引用了对象,如:

myHouse.door = new Door(); 
+0

我相信,这将工作就像一个魅力人口。该文档还表示,这是将集合嵌套到模型中的常见做法,所以我不明白为什么嵌套模型会受到伤害。所以,+1的答案和[这里是我正在谈论的部分](http://documentcloud.github.com/backbone/#FAQ-nested) – Alladinian

+0

如果有什么我会去宣布子模型和子集合为REAL属性,而不是“过滤”模型的属性。再加上你将不得不覆盖你的toJSON方法递归地遍历你的子模块和集合。如果这就是你想要的,但请检查https://github.com/PaulUithol/Backbone-relational/ –

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.attributes.address将是一个通常的数据someUser.save()数据对象


一件事尚未测试通过AddressModelsomeUser.fetch()