2012-04-30 7 views
0

バックボーンを0.9.2にアップグレードしました。以前のバージョンと同じようにview.remove()を実行すると、もはや私のために働いていません。バックボーンView.remove()

私は、viewViewにラップされたいくつかのjqueryコードを持つprocessingViewというpopup.jsビューを持っています。これを処理と呼ばれる変数に割り当てます。this.processing = new processingView(); Domから処理オブジェクトを削除するイベントを発生させるとき、 this.processing.remove()はもはや削除されません。私がBackboneの古いバージョンに戻すと、それは動作します。

誰にでもこれがどういう考えがありますか? 私のコードは膨大な量のソースファイルなので、ここにすべて貼り付けるのは難しいです。しかし、私がしようとしている限り、DOMからビューオブジェクトを削除するのは簡単です。

は自分の質問に答え

あなたが今まで手動で特定するバックボーンビューにthis.el設定した場合、私は手動でView.el

を設定したとき、私はのsetElementを使用していませんでした[OK]をDOM要素を使用する場合は、代わりにsetElementを使用します。

view.elとviewの違いはまだ分かりません。たぶん誰かが私のためにそれをまっすぐにすることができます。

答えて

1

view.$el$(view.el)に相当します。これは便利なので、jQueryコンストラクタを繰り返し呼び出すという面倒さと追加のオーバーヘッドが発生する必要はありません。 elを手動で設定する必要がなく、setElementと呼ぶように、コードを構造化することができます(可能な場合)。たとえば、my answerと別の質問を見ることができます。

+0

以前の追加では、jqueryオブジェクトにelをラップする必要はありませんでした。私はコンストラクタを通してそれを渡します。 var view = new View({el:$( '。domEl')})。それで、elは既にdom要素参照でした。私がこれをすると$を使う必要があります.el – user1096509

+0

'el'はすでにjQueryオブジェクトだったのですか?以前のバージョンの動作には言えませんが、Backbone 0.9.2では 'view.el'をDOMオブジェクトに正規化し、' view。$ el'をそのDOMオブジェクトをラッピングするjQuery(または代替ライブラリ)オブジェクトに正規化しています。したがって、jQueryオブジェクトを 'el'プロパティとしてコンストラクタに渡すと、これは' view。$ el'として保存され、DOMオブジェクトは 'view.el'として保存されます。それがこれまでになかったのであれば、一貫性を導入するように変更されたので、 'view.el'は常にDOMオブジェクトになります(少なくとも、APIを介して' el'を設定するときは 'setElement' ) – JMM

+0

ありがとうございました。 – user1096509