在Marionette中从一个区域切换到另一个区域时,视图无法正确渲染
Switching from a region to another in Marionette, views are not rendered correctly
我正在使用Marionette
,遇到以下问题。
我创建了一个包含两个不同区域的布局。在initialize
上,布局在布局的两个区域中加载两个视图。说ViewA
和ViewB
。在ViewA
中触发一个事件。该事件由布局消耗以进行切换,并注入其他两个视图。说ViewC
和ViewD
。无论何时执行切换,ViewC
和ViewD
都不具有我应用于它们的相同样式(还有css)。特别是,jQuery Mobile样式不适用。有什么建议吗?
这里有一些代码,其中注释突出了重要部分。
onConfirm : function() {
this.leftView = new ViewC();
this.rightView = new ViewD();
this.leftRegion.show(this.leftView);
this.rightRegion.show(this.rightView);
// FIX calling trigger('create') seems fix the problem. Why? Is this correct?
this.$el.trigger('create');
},
initialize : function() {
// listen for event triggered from ViewA
// e.g. GloabalAggregator.vent.trigger("ga:confirm");
// where "ga:confirm" is a simple string
GloabalAggregator.vent.on("ga:confirm" , this.onConfirm, this);
this.leftView = new ViewA(), // creating here a new ViewC the style is applied correctly
this.rightView = new ViewB(); // creating here a new ViewD the style is applied correctly
},
onRender : function () {
this.leftRegion.show(this.leftView);
this.rightRegion.show(this.rightView);
}
编辑
调用trigger('create')
似乎可以解决问题。为什么?这是正确的吗?
当您向页面添加新的html时(添加新的渲染视图、将视图交换为其他视图等),您必须让jQuery mobile知道这一点。
"create"事件用于通过jQueryMobile小部件增强"raw"html。更多信息可以在这里找到:http://jquerymobile.com/demos/1.0/docs/pages/page-scripting.html查找"增强新标记"部分。
相关文章:
- onkeyup无法动态创建多个文本区域
- 如何使用javascript从主svg对象动态创建svg视图框
- 正在使用$location.path(.)路由ng视图
- FabricJs-限制主对象内添加对象的移动区域
- angular.js没有'无法在PhoneGap中处理视图标记
- 如何包含特定于每个视图angularjs的javascript文件
- 测试提线木偶布局视图中是否缺少区域元素
- 在视图中从文本区域加载内容
- 视图未渲染,区域与布局
- 轨道视图中的文本区域在 js 中返回 null
- 木偶.js - 项目视图获取父区域引用
- 骨干木偶获取区域视图
- 滚动视图中text区域的滚动文本
- 在Marionette中从一个区域切换到另一个区域时,视图无法正确渲染
- 将多个视图附加到Marionette区域的优雅方式
- 如何获取视图区域的当前国家
- 当视图从区域中移除时会触发哪些视图事件
- 在区域中使用新的子视图构建视图
- 平滑的视图区域过渡
- 如何通过自定义打印窗口打印完整的网格视图区域