特定のURLに移動すると、コントローラーメソッドが起動され、ItemViewがアプリケーションのリージョンの1つに読み込まれます。このItemView自体(親)には、少数の子ItemViewが含まれ、それ自体がレンダリングされるときにすべてがレンダリングされます。親のItemViewは次のとおりです。
return Backbone.Marionette.ItemView.extend({
template: Handlebars.compile(template),
ui: {
textInput01: "#text-input-01"
},
events: {
// no events yet
},
initialize: function() {
// no init yet
},
onRender: function() {
this.appRoutefinderTextinputItemView = new AppRoutefinderTextinputItemView({parentView: this});
$(this.ui.textInput01).html(this.appRoutefinderTextinputItemView.render());
}
});
そして、これが現在の唯一のItemViewです:
return Backbone.Marionette.ItemView.extend({
template: Handlebars.compile(template),
events: {
// no events yet
},
initialize: function() {
// no init yet
},
onRender: function() {
// no onRender yet
}
});
initialize
何らかの理由で、子のとメソッドの両方が起動していて、onRender
必要なデータがすべて存在しているように見えても、子がレンダリングされていないか、「空白」の方法でレンダリングされているため、親が変更されていないため、理解できません。見る。
私が理解している限りrender()
、ItemViewをインスタンス化/参照するときに暗示されるので、子を呼び出す必要はありませんか?電話を切ってもrender()
同じ結果になります。
他のItemView内からItemViewをレンダリングすることについて、私が見逃している何かがあると想定する必要がありますが、ドキュメントを精査しても役に立たなかったようです。
二次的な質問は次のようになります:私は適切な方法で子のビューをインスタンス化していますか、それともそうするためのより良い方法がありますか?
*編集-いくつかの実験の後、「受け入れられた」解決策は、親ビューを拡張されたItemViewであるレイアウトにすることであるように見えます。これは機能します。ただし、ItemView内のItemViewが機能しないのはなぜか疑問に思っています。render()
手書きのメソッドをItemViewに統合するつもりですか、それを維持するつもりでしたか?