Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在木偶中从一个区域切换到另一个区域时,视图不会正确渲染_Javascript_Backbone.js_Marionette - Fatal编程技术网

Javascript 在木偶中从一个区域切换到另一个区域时,视图不会正确渲染

Javascript 在木偶中从一个区域切换到另一个区域时,视图不会正确渲染,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,我正在使用木偶,我有以下问题 我创建了一个包含两个不同区域的布局。在initialize上,布局在我的布局的两个区域中加载两个视图。说出ViewA和ViewB。在ViewA中会触发一个事件。该事件由要切换的布局使用,并注入其他两个视图。说ViewC和ViewD。 每当执行切换时,ViewC和ViewD的样式(以及css)与我应用于它们的样式不同。特别是,不应用jQuery移动样式。有什么建议吗 下面是一些代码,其中注释突出了重要部分 onConfirm : function() {

我正在使用
木偶
,我有以下问题

我创建了一个包含两个不同区域的布局。在
initialize
上,布局在我的布局的两个区域中加载两个视图。说出
ViewA
ViewB
。在
ViewA中
会触发一个事件。该事件由要切换的布局使用,并注入其他两个视图。说
ViewC
ViewD
。 每当执行切换时,
ViewC
ViewD
的样式(以及css)与我应用于它们的样式不同。特别是,不应用jQuery移动样式。有什么建议吗

下面是一些代码,其中注释突出了重要部分

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知道这一点

“创建”事件用于使用jQuery移动小部件增强“原始”html。更多信息可在此处找到:
查找“增强新标记”部分。

此代码看起来正确,除非我遗漏了什么。你能在JSFIDLE中重现你的问题吗?如果问题出在风格上,那么显示JS代码的目的到底是什么?显然css层次结构有问题。检查css,使用chrome开发者控制台(或任何其他)检查生成的布局。如果不同时看到布局和css,就很难指出真正的问题。但就是这样,除非这是多个视图的拼凑,否则这段代码肯定看起来不正确。通过将视图指定给相同的变量,即
leftRegion
righregion
,显然是在破坏区域对象。不确定这是您的问题,但这肯定是发布的代码的问题。@DavidSulc我将尝试创建一个自包含的JSFIDLE。谢谢。@AndrewHubbs我修正了代码中的输入错误。干杯