1

参考这篇文章:Backbone.js:重新填充或重新创建视图?

我基本上使用得票最多的东西,但在显示来自我的路由器的视图时不是公认的答案。

所以我基本上打电话

this.unbind();
this.remove();

我遇到的问题是我有一个左侧导航面板,然后在右侧我有我的内容。它看起来像这样:

<div class="container-fluid">
    <div class="row-fluid">
        <div class="span2">
            // nav bar stuff
        </div>
        <div class="span10">
            <div id="content-container"></div>
        </div>
    </div>
</div>

因此,当我在视图上调用 this.remove() 时,它基本上给我留下了:

<div class="span10"></div>

div 容器消失。我不知道删除主干视图或插入主干视图的最佳方法是什么<div id="content-container"></div>。我想当我处理我的视图时,在调用 remove() 之后,我可以查看 DOM 并插入内容容器,但似乎应该有更好的方法。有什么想法吗?提前致谢。

4

1 回答 1

2

来自精美手册

消除 view.remove()

从 DOM 中移除一个视图,并调用stopListening来移除该视图具有listenTo的任何绑定事件。

该实现几乎是将英语直译为 JavaScript:

remove: function() {
  this.$el.remove();
  this.stopListening();
  return this;
}

this.$el.remove()调用从 DOM 中删除元素。

您的问题是您将其用作视图el

<div id="content-container"></div>

所以view.remove()删除你的#content-container.

有解决办法:

  1. 让视图创建自己的视图el,然后将其放入#content-container.
  2. 覆盖remove方法:

    remove: function() {
        this.unbind();
        this.stopListening();
        // No this.$el.remove() since we don't own the `el`
        return this;
    }
    
于 2013-11-06T21:11:40.410 回答