gpt4 book ai didi

backbone.js - Marionette.js appRouter 在应用程序启动时未触发

转载 作者:行者123 更新时间:2023-12-02 07:33:38 25 4
gpt4 key购买 nike

我目前正在将 Marionette 集成到现有的 Backbone 应用程序中。

我已经有一个现有的 Backbone 路由器,但我正在尝试实现 Marionette.AppRouter 来取代它。问题是,在新 Marionette 路由器应拾取的 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 时,Marionette 路由器不会按其应有的方式触发。

但是,如果我加载页面:http://mysamplesite.com/#!/123,然后导航到http://mysamplesite.com/#!/123/页,Marionette 路由器正确触发。有什么想法吗?

最佳答案

您在创建路由器实例后是否调用了Backbone.history.start()?如果没有,您需要这样做。在您的应用程序中调用此方法之前,路由器不会运行,并且在至少实例化一条路由之前,您无法调用此方法。我通常这样做:


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

关于backbone.js - Marionette.js appRouter 在应用程序启动时未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15260488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com