我的方法是通过引用它的父级来创建视图。
所以基本上你的观点看起来像这样:
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 方法总是更好,所以你可能也想尝试一下。