0

如果主干模型(或集合)可能已经存在也可能不存在,你如何扩展或混合?

这是我尝试过的:

mymodels.A = ('A' in mymodels ? mymodels.A : Backbone.Model).extend({
 /* url, initialize, parse, etc... */ 
});

或者

mymodels.A = ('A' in mymodels ? mymodels.A.prototype : Backbone.Model).extend({
 /* url, initialize, parse, etc... */
});

或者

mymodels.A = _.extend('A' in mymodels ? mymodels.A : Backbone.Model, {
 /* url, initialize, parse, etc... */
});

想法?

编辑:

mymodels.A = (mymodels.A || Backbone.Model).extend({
 /* url, initialize, parse, etc... */
});

编辑2:

采取了不同的方法....见下面的答案

4

2 回答 2

2

这完成了我想做的事情......这是创建模型。最后,我分段创建一个对象并将整个对象传递给 Backbone.Model.extend:

var mymodels = {};

mymodels.A = _.extend({}, mymodels.A, {
    url: "http://www.google.com"
});

mymodels.A = _.extend({}, mymodels.A, {
    initialize: function(){
        this.set('mixin', 'TRUE'); 
    }
});
mymodels.A = Backbone.Model.extend(mymodels.A);

var model = new mymodels.A({'new': 'TRUE'});
于 2012-09-28T14:46:35.950 回答
0

尝试:

// ensure its created
mymodels.whatever = mymodels.whatever || Backbone.Model.extend({...; // create it empty if you need
// now if you want to extend do it knowing it's created
mymodels.whatever = mymodels.whatever.extend({...

如果mymodels.whaever存在,那么它将重新分配变量(什么都不做)。如果它不创建 OR 将需要评估第二部分,newBackbone.Model用于创建模型的表达式(甚至是空的,例如{})。

于 2012-09-28T13:31:43.647 回答