Javascript 如何将管线参数传递到主视图?
我使用一个非常简单的路由器来路由所有页面请求。我通过实例化BVApp启动我的应用程序 最近,我添加了路由,并且只使用了第一个参数Javascript 如何将管线参数传递到主视图?,javascript,backbone.js,Javascript,Backbone.js,我使用一个非常简单的路由器来路由所有页面请求。我通过实例化BVApp启动我的应用程序 最近,我添加了路由,并且只使用了第一个参数page1。如何将此参数传递到我的BVApp代码 我知道我可能不应该通过构造函数传递它,因为使用的主干只允许某些参数。看 我可以把它称为BVApp上的一种方法吗 我看了一眼后,发现什么都不明显 也许我进入应用程序的入口点根本不应该是主干视图 // BRMain var BRMain = Backbone.Router.extend({ Name: 'BRMain
page1
。如何将此参数传递到我的BVApp代码
我知道我可能不应该通过构造函数传递它,因为使用的主干只允许某些参数。看
我可以把它称为BVApp上的一种方法吗
我看了一眼后,发现什么都不明显
也许我进入应用程序的入口点根本不应该是主干视图
// BRMain
var BRMain = Backbone.Router.extend({
Name: 'BRMain',
routes: {
"*page1(/:supertag)(/:tag)": "main"
}
});
var router = new BRMain();
// matches
// domain.com
// domain.com#page1
// domain.com#page1/supertag
// domain.com#page1/supertag/tag
router.on('route:main', function (page1, supertag, tag) {
var App = $A.Mod.add(new BVApp());
});
Backbone.history.start();
// BVApp
var BVApp = Backbone.View.extend({
Name: 'BVApp',
el: window,
initialize: function () {
var public_page = $A.Reg.get('pub_req');
var token = Storage.getToken();
initialize
函数接受可选的options
对象,该对象与传递给视图构造函数的对象相同
router.on('route:main', function(page1, supertag, tag) {
// pass any arguments inside the object here
var App = $A.Mod.add(new BVApp({
page: page1
}));
});
var BVApp = Backbone.View.extend({
Name: 'BVApp',
el: window,
initialize: function(options) {
options = options || {};
// then you can use them here
this.page = options.page;
}
});
主干的文档中没有很好地解释这一点,但这是所有对象的一种常见模式。例如,这里有一个示例
事实上,传递给主干中构造函数的任何参数都会传递给initialize
函数
var View = Backbone.View = function(options) {
this.cid = _.uniqueId('view');
_.extend(this, _.pick(options, viewOptions));
this._ensureElement();
// lastly, they call initialize passing all arguments along
this.initialize.apply(this, arguments);
};