Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将管线参数传递到主视图?_Javascript_Backbone.js - Fatal编程技术网

Javascript 如何将管线参数传递到主视图?

Javascript 如何将管线参数传递到主视图?,javascript,backbone.js,Javascript,Backbone.js,我使用一个非常简单的路由器来路由所有页面请求。我通过实例化BVApp启动我的应用程序 最近,我添加了路由,并且只使用了第一个参数page1。如何将此参数传递到我的BVApp代码 我知道我可能不应该通过构造函数传递它,因为使用的主干只允许某些参数。看 我可以把它称为BVApp上的一种方法吗 我看了一眼后,发现什么都不明显 也许我进入应用程序的入口点根本不应该是主干视图 // BRMain var BRMain = Backbone.Router.extend({ Name: 'BRMain

我使用一个非常简单的路由器来路由所有页面请求。我通过实例化BVApp启动我的应用程序

最近,我添加了路由,并且只使用了第一个参数
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);
};