Javascript 主干视图上的这个.remove()使el消失

Javascript 主干视图上的这个.remove()使el消失,javascript,html,backbone.js,Javascript,Html,Backbone.js,关于这篇文章: 我基本上使用的是投票最多的东西,但不是公认的答案来显示路由器的视图 所以我基本上是打电话 this.unbind(); this.remove(); 我遇到的问题是我有一个左侧的导航面板,然后在右侧有我的内容。看起来是这样的: <div class="container-fluid"> <div class="row-fluid"> <div class="span2"> // nav bar

关于这篇文章:

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

所以我基本上是打电话

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>

//导航条
因此,当我在视图上调用此.remove()时,它基本上会给我留下:

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

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

来自:

删除
查看.删除()

从DOM中删除视图,并调用stopListening以删除该视图已侦听的所有绑定事件

这几乎是一个将英语直译成JavaScript的直译:

remove: function() {
  this.$el.remove();
  this.stopListening();
  return this;
}
this.$el.remove()调用从DOM中删除元素

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

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

向上投票。在我看来,默认情况下remove()不应从DOM中删除DOM元素。这很愚蠢。remove()应该有参数。remove(true)应该删除DOM元素。我困惑了几天,为什么我的新视图在删除前一个视图后不会出现。可能不是唯一的一个。@AlexMills:当视图创建和管理它们自己的
el
s时,我有一个更好的时间,所以默认的
remove
行为对我很有效。如果要绑定到现有元素,则无论如何都必须重写
remove
,以便视图可以删除其事件委派,否则将出现内存泄漏、僵尸和令人费解的重复事件。与其使用参数,
remove
不如检查视图是否创建了自己的
el
,并根据需要删除节点或取消事件的委派;不过,这种方法存在漏洞。文档需要更新。它说的是“从DOM中删除视图”,而不是“从DOM中删除DOM元素”。这个棘手的玩意儿“this.$el.remove();”inside remove()正在影响许多人的生活。正如你所说,穆,无论发生什么,你都必须覆盖/滚动你自己的移除。然而,违约是错误的。而且这些文件是误导性的。很抱歉,你向错误的人投诉了。我想说,允许视图绑定到现有元素会影响很多人的生活,这是不应该允许的,但这不是我的要求。@AlexMills:与web开发无关,只是基本的软件清洁度:不要弄乱任何不属于你的东西。调用者(通常是主干网中的路由器)应该创建视图,将它们的
el
s添加到页面上适当的容器中,然后调用它们上的
remove
,将它们删除。
remove: function() {
    this.unbind();
    this.stopListening();
    // No this.$el.remove() since we don't own the `el`
    return this;
}