Marionette.js appRouter不开火应用启动(Marionette.js appRo

2019-08-17 08:22发布

我目前木偶集成到现有的骨干应用。

我在地方现有的骨干路由器,但是想实现一个Marionette.AppRouter取代其位置。 问题是,在“硬刷新”上,新的木偶路由器应拿起URL,它不火。 如果我浏览到另一个页面,然后再回到那个没有在硬刷新火的URL,它正确地触发。 我想不通为什么它的工作原理后,我已导航到另一个页面,然后再返回。 这里是我的代码示例:

TestApp = new Backbone.Marionette.Application();
    var testAppController = {
        testLoadPage: function(){
            console.log('testLoadPage Fired'); //<---- DOES NOT FIRE ON HARD REFRESH
        }
    };
    TestAppRouter = Backbone.Marionette.AppRouter.extend({          
        appRoutes: {
            "!/:var/page": "testLoadPage",
            "!/:var/page/*path": "testLoadPage"
        },
        controller: testAppController,
        route: function(route, name, callback) {
            return Backbone.Router.prototype.route.call(this, route, name, function() {
                if (!callback) callback = this[name];
                this.preRoute();
                this.trigger.apply(this, ['beforeroute:' + name].concat(_.toArray(arguments)));
                callback.apply(this, arguments);
            });
        },
        preRoute: function() {
            app.showLoader(name, arguments);
        }
    });
    TestApp.addRegions({
        contentContainer: '#container'
    });
    TestApp.addInitializer(function(options){
        new TestAppRouter();
    });
    TestApp.start();

当我加载页面: http://mysamplesite.com/#!/123/page直接,木偶路由器不火,因为它应该。

但是,如果我加载页面: http://mysamplesite.com/#!/123然后导航到http://mysamplesite.com/#!/123/page ,木偶路由器火灾正确。 有任何想法吗?

Answer 1:

你叫Backbone.history.start()创建你的路由器实例后? 如果没有,你需要做的。 路由器将无法运行,直到这就是所谓的在你的应用程序,你不能说这一点,直到至少一条路径已经被实例化。 我经常这样做:


TestApp.on("initialize:after", function(){
  if (Backbone.history){ Backbone.history.start(); }
});

心连心



文章来源: Marionette.js appRouter not firing on app start