为什么 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);
很酷,所以我在调试器上点击了继续,然后砰!我的观点消失了。事实证明它在 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
关于我应该做什么的任何建议?
覆盖打开?什么?我对 Marionette 的了解还不够深入,无法确信我不会破坏其他东西。
将 nodeType 设置为 1 以外的值?还有什么设置?
你的建议在这里?:)