私は内部的にBackbone.jsを使用するjQueryウィジェットに取り組んでいます。
ここではコレクションがモデルを作成し、ビューには、独自のサブビューを作成します。Backbone.jsクラス内のjQueryウィジェットのインスタンスプロパティにアクセスする方法は?
Serializer = function(options, element){
this.element = element;
this.data = options.data;
this.collection = new Serialize.Collection(this.data);
this.view = new Serialize.View({ el: this.element, collection: this.collection });
};
$.widget.bridge("serialize", Serializer);
$.widget.bridgeは(ここでは@vars
がレールによって設定されている)のウィジェットのインスタンスを作成し、オプションで渡すための友好のラッパーを提供します。
$('#item').serialize({
data: <%= @data %>,
name: '<%= @name %>',
keys: '<%= @keys %>'
});
後で作成されるモデルとビューでは、ウィジェットインスタンスのオプションにアクセスする必要があります。私はこれまでのコレクション自体のオプションを設定することで、これを解決:
this.collection = new Serialize.Collection(this.data, options);
以降、彼らが必要とされる場所(例えばビューで)それらを参照:
var keys = this.model.collection.keys
しかし、これは厄介取得していませんその柔軟性。
単一インスタンスの場合、Serialize.Config = { // options }
を設定して、グローバルにアクセスできます。しかし、複数のインスタンスの場合、各インスタンスにはそれぞれ独自の設定が必要です。
私の質問は、引数として渡すことなく、Backboneクラス内のウィジェットインスタンスとそのオプションにアクセスするきれいな方法があるかどうかです。
を感謝し、その良いアプローチのようだ。私は、すべてを初期化するウィジェットのインスタンスに対応する1つのマスタービューというアイデアが気に入っています。私はおそらく、マスタービューの中でコレクションを作成することも考えていますが、それはちょっとした「始まり」を感じ始めると思っています:) – meleyal
実際、それはもっとクリーナーにもなります!コレクションはマスタービューの一部であるため、そこに安全に作成できます。それに応じて上記のスクリプトを変更してください。 – poezn