我想做的基本上是找到最好的方法来管理所有视图,让它们在必要时关闭和创建。因此,我在我的 Backbone.Router
实例中创建了一个独立的管理器来处理所有我的视图,如下所示。
router.js
AppRouter.prototype.initialize = function () {
.......
var eMgr = _.extend({}, Backbone.Events);
var vMgr = new ViewManager();
vMgr.add(new vTopMenu({eMgr: eMgr}));
vMgr.add(new vTooltip({eMgr: eMgr}));
app_router.on('route:MainMenu', function () {
vMgr.close_all_views(function(){
vMgr.add(new vmainMenu({eMgr: eMgr}));
vMgr.render_all_views();
});
});
app_router.on('route:showMap', function () {
vMgr.close_all_views(function(){
vMgr.add(new vMapMenu());
vMgr.render_all_views();
});
});
...
}
如您所见,TopMenu和Tooltip视图仅被创建一次,因为我不希望更改它们的内容,并且在加载视图时我也想避免空白空间...
但我不确定这是否是一个好主意,因为当我从一个路由导航到另一个路由时,所有其他视图都会关闭并重新初始化。
因此,问题是,将这些视图设置成这样是一个好做法吗?还是应该在每个路由被触发时都重新创建视图?