14

UI 要素に関する Backbone.Marionette のビューの背後にある決定を理解したいだけです。次のように、既存の DOM 要素で Marionette.View をインスタンス化する場合:

view = new Marionette.ItemView({
     el: "#element",
     ui : {
         whatever : "#whatever"
     }
});

view.$el内部のjqueryセレクターにアクセスできますがview.initialize、これまでのところ非常に良好です。ただし、にアクセスしようとすると、実際のjqueryセレクターview.ui.whateverではなく、セレクター、つまり文字列「#whatever」にしかアクセスできません。$("#whatever")

この理由は、が呼び出されるだけで、 の前にMarionette.View.bindUIElements()呼び出されないためです。renderinitialize

この行動が論理的だと思うかどうか、またその理由を教えてください。

ビューを既存の にアタッチする場合にのみ質問していelます。ビューがテンプレートを使用して作成されている場合、バインディングが にある理由を理解していrender()ます。

4

3 に答える 3

26

ビューを既存の要素にアタッチすることは例外です。通常のビューのライフサイクルには の呼び出しが含まrenderれます。これを行わないと、UI 要素がバインドされるものは何もありません。

ビューを既存の要素にアタッチする必要がある場合this.bindUIElements()は、メソッドを呼び出すだけです。initialize

于 2013-03-09T20:52:03.643 に答える
1

Marionette で作業しているときは、UI 要素にアクセスする必要があるコードを onShow メソッド内に配置しました。このイベントは、DOM の準備が整い、要素を操作する準備が整った後に発生します。このメソッド内では、ui.whatever は文字列ではなく要素を指しています。

于 2013-03-10T23:26:22.007 に答える
0

jQuery要素にアクセスする必要があるため、その問題があると思います

this.ui.whatever

「これ」はすでにビューインスタンスであるためです。参照: http://marionettejs.com/docs/v2.4.4/marionette.itemview.html#organizing-ui-elements

于 2016-01-28T11:23:10.510 に答える