我有一个名为GridView的模块,其中我扩展了Marionette.ItemView,如下所示:
GridView.View = Marionette.ItemView.extend({
template: "#grid-view-template",
showGrid: function(gridName) {
....
},
....
}
每当要显示网格时,调用者都会扩展GridView并使用参数调用showGrid方法(如下所示)
//Module A code
var View = GridView.View.extend({
});
....
someregion.view.showGrid("GridA");
//Module B code
var View = GridView.View.extend({
});
....
someOtherregion.view.showGrid("GridB");
问题是当我首先显示网格A然后单击(在某些菜单上)以显示网格B时,我得到一个空白屏幕。如果我回到网格A,它会显示网格。如果我首先显示网格B,它会显示网格,但在单击网格A时会出现空白屏幕。 (即仅显示首先调用的网格)。我总是可以回到首先显示的网格并显示: - (
在沮丧的时刻,我做了以下事情:
a)从GridView
中删除了模板b)将模板添加到每个模块
如果我这样做,它会按预期工作(下面的代码片段)
GridView.View = Marionette.ItemView.extend({
//template: "#grid-view-template", (COMMENTED OUT)
showGrid: function(gridName) {
....
},
....
}
//Module A code
var View = GridView.View.extend({
template: "#gridA-template",
});
....
view.showGrid("GridA");
//Module B code
var View = GridView.View.extend({
template: "#gridB-template",
});
....
view.showGrid("GridB");
当每个扩展GridView的View都有自己的模板时,一切运行良好 - 如果有人能够对此有所了解,我将不胜感激。
虽然这对我有用,但由于每个需要显示网格的模块需要使用不同的ID定义自己的模板,因此很痛苦 模板本身很简单
<div id="grid-view-div3"></div>
提前致谢
-Joseph
答案 0 :(得分:0)
只要您的子视图全部使用相同的模板,就可以在基类中创建模板,然后将视图扩展到它。如果模板需要稍微不同(不确定是否可以更改),那么您可以保留基类,然后在每个子视图中指定要使用的模板,就像您正在做的那样。
如果您有办法制作更通用的模板,并且所有网格(A,B或C)都使用相同的div(来自您的模板),那么您的第一个解决方案应该有效......听起来比如,当您将网格放入模板为模块A提供showgrid:function(gridName)的正确div时,使用模块B的相同功能寻找不同的div
showGrid到底是做什么的?