我正在使用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()会有什么可能,但是如何才能在此设置中仅渲染子视图?
答案 0 :(得分:2)
我想你想用backbone.layoutmanager
添加这样的东西 thisLayout.setView("#content", new View()).render();
backbone.layoutmanager v0.6.6文档可能会有所帮助 http://documentup.com/tbranyen/backbone.layoutmanager/#usage/nested-views
答案 1 :(得分:0)
如果我理解你的问题,你可以在dosomething函数中执行此操作:
this.$("#divToRenderTo").html(new subView().render().$el);
一定要“退回”;在子视图的渲染功能结束时。
答案 2 :(得分:0)
我通常用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();
}