为什么Marionette ItemView.open在之前渲染步骤后调用$ el.empty()?
因为我的ItemView无法显示,因此咬牙切齿之后,我逐步完成了木偶代码。令我非常高兴的是,我的ItemView 是渲染。 这是ItemView.show的一部分:
show: function(view){
this.ensureEl();
if (view !== this.currentView) {
this.close();
view.render(); // <-- Much rejoicing! It showed up!
this.open(view);
很酷,所以我在调试器和bam上继续点击!我的观点消失了。事实证明它在open()方法中被破坏了:
// Override this method to change how the new view is
// appended to the `$el` that the region is managing
open: function(view){
this.$el.empty().append(view.el);
},
所以它是$ el.empty()。我看到我可以覆盖它,但我有另一个应用程序,这不会发生。所以看一下empty()的代码:
// Remove element nodes and prevent memory leaks
if ( elem.nodeType === 1 ) {
jQuery.cleanData( getAll( elem, false ) ); //<-- Much sadness it disappeared. :(
}
任何人都知道nodeType === 1是什么意思?似乎我的应用程序工作不是nodeType === 1我的当前应用程序与消失的ItemView是nodeType === 1
关于我应该做什么的任何建议?
覆盖打开?什么?我真的不太了解木偶,有信心我不会破坏别的东西。
将nodeType设置为1以外的值?还有什么其他设置?
你的建议在这里? :)
答案 0 :(得分:0)
我从我的视图中删除了一行,并按宣传方式工作。我删除了哪一行?
// The DOM Element associated with this view
el: ".center_court",
这也是region = content === .center_court。 使用App.content.show(view)我将视图发送给自己。所以现在View不需要知道它是什么。默认情况下,它使用div,在我的区域显示正常。
感谢您查看此内容,希望它可以帮助某人。
安德鲁