参考这篇文章:Backbone.js : repopulate or recreate the view?
我基本上使用的是投票率最高的,但在路由器显示视图时却没有接受的答案。
所以我基本上打电话给
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并插入内容容器,但似乎应该有更好的方法。有什么想法吗?提前致谢。
答案 0 :(得分:2)
来自fine manual:
删除
view.remove()
从DOM中删除视图,并调用 stopListening 以删除视图 listenTo '的任何绑定事件。
The implementation几乎是将英语转换为JavaScript的短语:
remove: function() {
this.$el.remove();
this.stopListening();
return this;
}
this.$el.remove()
调用会从DOM中删除该元素。
您的问题是,您正在使用此视图el
:
<div id="content-container"></div>
因此view.remove()
会删除您的#content-container
。
有解决方案:
el
,然后将放在 #content-container
内。覆盖remove
方法:
remove: function() {
this.unbind();
this.stopListening();
// No this.$el.remove() since we don't own the `el`
return this;
}