Backbone LayoutManager повторно отображает подвиды
Я использую BBB с отличным LayoutManager для просмотра. К сожалению, я не могу найти способ перерисовки определенных подпредставлений. Вот мои настройки:
Home.Views.Layout = Backbone.Layout.extend({
template: "home/home",
el: "#main",
views: {
"#left-menu-container": new Home.Views.Leftmenu(),
"#searchbox": new Home.Views.Searchbox(),
"#content": new Home.Views.Content()
}
});
Home.HomeView = new Home.Views.Layout();
Home.HomeView.render();
Home.Views.AddEditPatient = Backbone.View.extend({
template: "......",
events: {
'click .dosomething': 'dosomething'
},
dosomething: function(){
// [dosomething]
// Only Render Sub-View, e.g. #content here...
}
});
Я не хочу перерисовывать весь макет, что было бы возможно при повторном вызове Home.HomeView.render(), но как я могу визуализировать только подвид в этом параметре?
3 ответа
Я думаю, что вы хотите добавить, чтобы сделать что-то подобное с backbone.layoutmanager
thisLayout.setView("#content", new View()).render();
Может быть полезна документация backbone.layoutmanager v0.6.6 http://documentup.com/tbranyen/backbone.layoutmanager/
Также проверьте http://vimeo.com/32765088
Если я правильно понимаю ваш вопрос, вы можете сделать это с помощью функции дозирования:
this.$("#divToRenderTo").html(new subView().render().$el);
Обязательно нужно "вернуть это"; в конце функции визуализации вашего под-представления.
Есть два способа, которыми я обычно делаю это с layoutmanager:
Создавайте представления в вашей функции инициализации, а затем перетаскивайте их в представление в beforeRender. Это дает вашему представлению доступ к подпредставлению, так что вы можете отобразить его напрямую.
initialize: function() { this.subview = new SubView(); }, beforeRender: function() { this.insertView(this.subview); }, doSomething: function() { this.subview.render(); }
Ты можешь использовать
view.getView(#selector)
вернуть встроенное представление и затем вызвать render для этого.doSomething: function() { this.getView('#content').render(); }