2011-11-12 9 views
0

私のアプリケーションでは、モデルの数が急速に増えました。私はbackbone.jsに関するあなたの標準的なプラクティスについて疑問に思っています。他の2つのモデルを必要とするビューを作成したいとします。あまりにも多くのモデルクラスを避ける方法

var m = new TheModel({ 
    model1: new Model1, 
    model2: new Model2 
}); 
var view = new TheView({model:m}); 

またはあなただけのような何かです:その後、私は余分を必要としないため、2番目が良さそうです

var m = { 
    model1: new Model1, 
    model2: new Model2 
}; 
var view = new TheView({model:m}); 

を次のように2つのモデルを格納する新しいモデルクラスを作成してください。モデルクラスTheModel

var m1 = this.model.get('model1'); 

またはこのよう:私は2つのメソッドを混ぜた場合、私はmodel1またはmodel2へのアクセスを取得したい場合は、2つの異なる方法があるので、しかし、その後、私の見解では、私は私が使用しているどのスタイルを覚えておく必要があり第2のスキームで:

var m1 = this.model.model1; 

あなたの意見ではどちらが良いですか?どのようにすべてのモデルとビューを整理しますか?

ありがとうございます!

答えて

3

あなたのモデルをリンクする理由がない限り、私は他のモデルを集約する新しいモデルを作成しません。 2番目のオプションは、リンクしていない方が良いです。

私はさらにそれらを分離することを好む:

var view = new TheView({purchases: purchasesModel, user: userModel }); 

次に、ビュー内、代わりにthis.modelを参照するの、あなたが特にthis.purchasesthis.userを参照。

ビューに表示されるmodelプロパティは実際には慣例に過ぎません。ビュー内のmodelプロパティには特別なことは何もありませんが、modelプロパティはコンストラクタで自動的にコピーされます。それ以外の場合、modelへの参照はBackbone.Viewにありません。もちろん

、これはあなたがそれで何かをする必要があることを意味します

var TheView = Backbone.View.extend({ 
    initialize: function(options) { 
     this.purchases = options.purchases; 
     this.user = options.user; 
    } 
}); 

この方法は、あなたが必要とする複数のモデルについての明示的なされています。私はあなたがビューの要件について明白ではないので、これはverison#2よりも優れています。

+0

ビート、入力Bri-guyのおかげで! –

+0

そして、私は、 'model'は単なる慣例であり、特別なものではないことを知ることは実際には本当に役立つと付け加えたいと思います。 –

+1

:)喜んで助けてください。疑わしいときは、(注釈付きの出典)[http://documentcloud.github.com/backbone/docs/backbone.html]を参照してください。それは実際に何が起こっているかを頭で知る素晴らしい方法です。 –

関連する問題