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が作成されない場合は、モデルの作成に使用する2番目の部分、、、または式を評価する必要がありnewますBackbone.Model(のように空の場合でも{})。

于 2012-09-28T13:31:43.647 に答える