Поскольку Backbone.js довольно гибкий, мне интересно, как лучше всего подходить к определенным вещам. Здесь мне интересно, должен ли я создавать представления моего приложения так, чтобы «.render()» и «.remove()» правильно меняли друг друга.Backbone.js: Должны ли .render() и .remove() иметь возможность обращать друг друга?
Во-первых, путь, который кажется самым чистым, - передать представление идентификатора или элемента 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() быть противоположными сторонами одной и той же монеты?
Хм ... Как отменить мой .remove(), а затем? Есть ли .add(), который я должен реализовать, или я его переусердствую? Я думаю о случаях использования, таких как лайтбоксы, уведомления и другие элементы пользовательского интерфейса, которые добавят себя в дом, когда они будут использованы, и удалятся, когда они будут сделаны. – SimplGy
Мне нравится этот подход больше, чем мой. Используйте мой только в экстремальных случаях, для остальных используйте это решение _not-connection_ – fguillen
@SimpleAsCouldBe (как @PeterLyons sais) вы можете вызывать «NotificationView» из внешнего компонента, «NotificationView.el» будет анонимным элементом auto- созданный 'View' it self, а внешний компонент - тот, который будет прикреплять' NotificationView.el' к DOM, поэтому 'NotificationView.remove()' можно вызвать без проблем. – fguillen