我有一个基本模型,用于定义URL属性的行为。
我还有一个单独的基础模型,它将Backbone模型与Knockout集成。
BaseModel = Backbone.Model.extend({
url: function () {
// some custom stuff
}
});
KoModel = Backbone.Model.extend({
viewModel: {},
initialize: function (options) {
Backbone.Model.prototype.initialize.call(this, options);
// sets up the view model
// listens to changes to update the view model when the model changes, etc.
}
});
我现在需要创建一个具有两个基础功能的模型。
我试过_.mixin
:
_.mixin(KoModel, BaseModel);
SomeModel = KoModel.extend({defaults: {foo: 'bar'}});
我试过extend
:
SomeModel = KoModel.extend(BaseModel, {defaults: {foo: 'bar'}});
这些尝试或其他一些类似的排列都没有起作用。
我也尝试使用prototype来定义基本模型,如下所示:
var KoModel = Backbone.Model.extend();
KoModel.prototype.viewModel = {};
KoModel.prototype.initialize = function (options) {
Backbone.Model.prototype.initialize.call(this, options);
// etc.
};
如何让新模型继承这两个基础?
答案 0 :(得分:1)
我发现如果我使用原型扩展而不是它可以工作:
var model = BaseModel.extend(KoModel.prototype);
model.extend({defaults: {foo: 'bar'}});
答案 1 :(得分:0)
您可以像这样创建“继承树”:
BaseModel = Backbone.Model.extend({
url: function () {
// some custom stuff
}
});
KoModel = BaseModel.extend({
viewModel: {},
initialize: function (options) {
Backbone.Model.prototype.initialize.call(this, options);
// sets up the view model
// listens to changes to update the view model when the model changes, etc.
}
});
SomeModel = KoModel.extend({defaults: {foo: 'bar'}});