在導航到特定URL時,會觸發一個控制器方法,該方法會將一個ItemView加載到我的應用程序的某個區域中。這個ItemView本身(父類)將包含一些子ItemView,當它自身呈現時將它們全部渲染。這裏的父ItemView控件:Backbone.Marionette嵌套的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()
呼叫時,也會得到相同的結果。
我不得不假設從其他ItemViews渲染ItemViews的東西,我只是想念,但通過文檔瀏覽似乎沒有幫助。
第二個問題是:我是否以適當的方式實例化子視圖,還是有更好的方法來實現?
*編輯 - 所以經過一些嘗試,看起來「接受」的解決方案只是使父視圖佈局,這是一個擴展的ItemView。這確實有用。但是,我仍然想知道爲什麼ItemView中的ItemView不起作用。我是否打算在ItemView上集成手寫的render()
方法,我是否保持這種方式?
Bah,當然!非常感謝Derick,並感謝你在木偶上所做的所有努力。 –