支持模块化和多视图的主干路由
Backbone routing for modular and multiple views
所以我在我的骨干路由设计有点进退两难,我试图看看其他人的想法或试图做什么来解决这个问题。
基本的问题是,我正在编写一个具有多个视图的应用程序,并且每个视图中都有嵌套视图,并且试图避免使用一个骨干路由器来控制这些视图和嵌套视图的状态。
问题的例子是:
Backbone.Router.extend({ routes:
'view1' : ..., 'view2Nested': ...,
'View2NestedNested' ...});
视图布局:
- View1
- View1Nested
- View2
- View2Nested
- View2NestedNested
在这个配置中,路由器必须现在关于View2NestedNested以便向它发送任何操作信息,这可能意味着主路由器必须持有对视图的引用或知道view2并获取它对view2Nested的引用,并向该视图请求View2NestedNested
我的方法是创建一个引用到它的父视图。
基本上你的视图是这样的:
var ViewAA = Backbone.View.extend({
initialize: function(options) {
this.parent = options.parent
},
render: function() {
this.parent.router.navigate("viewA/viewAA");
}
});
var ViewA = Backbone.View.extend({
initialize: function(options) {
this.router = options.router
},
render: function() {
this.nestedView = new ViewAA({ parent: this });
}
});
var router = new Router();
var viewA = new ViewA({ router: router });
第二种方法,我在更复杂的应用程序中使用的是使用一个全局变量…它看起来像这样:
var ViewAA = Backbone.View.extend({
initialize: function(options) {
},
render: function() {
app.router.navigate("viewA/viewAA");
}
});
app = {
router: new Router(),
classes: {
ViewA: Backbone.View.extend({ ... }),
ViewAA: Backbone.View.extend({ ... })
},
}
app.viewA = new app.classes.ViewA();
app.viewAA = new app.classes.ViewAA();
提示:使用RequireJS和AMD的方法总是更好,所以你可能也想尝试一下。
相关文章:
- 正在使用$location.path(.)路由ng视图
- 发送json对象或使用express路由呈现视图
- 当在ng视图中加载新路由时,Tabbing(tabindex)针对错误的元素
- ui路由器中基于查询的同级视图路由
- UI5 路由不实例化视图
- Angularjs UI视图和Rails服务器端模板路由
- 无法在MEAN应用程序中路由到部分视图
- 在backbone.js中路由视图时传递一个参数
- ng视图路由模板是否反映了ajax请求所做的更改
- Ember.js - CRUD 方案 - 指定从路由内的视图
- 如何在 Express.js 中为路由的子路径呈现不同的视图
- 快速 - 路由中间件 如何确定响应视图是否已呈现
- 如何在角度 JS 路由中保留模板视图
- AngularJS:使用路由记住复杂视图的状态/设置
- 使用主干.js中的路由管理单页应用程序中的多个视图实例
- 角度路由未填充 ng 视图
- AngularJs 路由不再工作.地址栏更改,但视图不会更改
- 加载Angular路由/视图后加载jQuery脚本
- jQTouch和Backbone.js路由/视图
- ReactJS-如何使用ES5路由视图