因为 Backbone.js 非常灵活,我想知道某些事情的最佳方法。在这里,我想知道我是否应该构建我的应用程序的视图,以便 '.render()' 和 '.remove()' 正确地相互反转。
起初,看起来最干净的方式是向视图传递一个 ID 或 jQuery 元素以附加到。如果事情以这种方式完成,调用 '.render()' 将不会正确替换 DOM 中的视图,因为主元素永远不会放回 DOM 中:
App.ChromeView = Backbone.View.extend({
render: function() {
// Instantiate some "sub" views to handle the responsibilities of
// their respective elements.
this.sidebar = new App.SidebarView({ el: this.$(".sidebar") });
this.menu = new App.NavigationView({ el: this.$("nav") });
}
});
$(function() {
App.chrome = new App.ChromeView({ el: $("#chrome") });
});
对我来说,最好将其设置为 .remove() 和 .render() 完全相反:
App.ChromeView = Backbone.View.extend({
render: function() {
this.$el.appendTo('body');
this.sidebar = new App.SidebarView({ el: this.$(".sidebar") });
this.menu = new App.NavigationView({ el: this.$("nav") });
}
});
$(function() {
App.chrome = new App.ChromeView();
});
Backbone.js 社区怎么说?.remove() 和 .render() 应该是同一枚硬币的两面吗?