为什么木偶ItemView.在之前的渲染步骤之后打开调用$el.empty()

Why does Marionette ItemView.open call $el.empty() after just rendering steps before?

本文关键字:调用 之后 el empty ItemView 为什么      更新时间:2023-09-26

为什么木偶ItemView。打开调用$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);

很酷,所以我在调试器上点击continue,砰!我的视野消失了。结果是它在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

有什么建议吗?

  1. 覆盖开放?与什么?我还不太了解木偶,所以我有信心不会弄坏别的东西。

  2. 将nodeType设置为除1之外的其他值?还有什么其他设置?

  3. 你有什么建议吗?:)

我从视图中删除了一行,它像广告中宣传的那样工作。我去掉的那条线?

// The DOM Element associated with this view
el: ".center_court",

也是region = content === .center_court。通过app。content。show(view)我将视图发送给自身。现在视图不需要知道它的el是什么。默认情况下,它使用div,它将在我的区域显示良好。

谢谢你看这个,希望它能帮助到别人。

安德鲁