gpt4 book ai didi

backbone.js - 如何使用主干和 requirejs 定义/使用多个路由

转载 作者:行者123 更新时间:2023-12-04 12:23:36 26 4
gpt4 key购买 nike

我将我的应用程序分成几个应用程序。

main.js
app.js
app1/
|- routing
|- controller
|- app
app2/
|- routing
|- controller
|- app

1) 当我尝试使用 app1 中的路由器时, 他们工作。
2) 当我尝试使用 app2 中的路由器时,它们不起作用。
3) 如果我评论这行 'js/app1/routing',main.js app2 中的路由器工作。

为什么我会出现这种行为?
在 github 上是否有一些使用多个路由和 requirejs 的应用程序示例?

谢谢。

这是我的代码:

** main.js **
define([
'js/app',
'js/app1/routing', // the routers in this app work
'js/app2/routing' // the routers in this app do not work but
// if I comment the previous line (js/app1/routing',)
// they works
],
function (App)
{
"use strict";
App.initialize();
});

** app.js **
define([],
function ()
{
"use strict";
var app = new Backbone.Marionette.Application();

return app;
});

** 应用 1/轮换 **
define(['backbone','app1/controller'], function(Backbone, controller)
{
"use strict";
var Router = Backbone.Marionette.AppRouter.extend({

appRoutes: {
'*defaults': 'index1'
}

});
return new Router({
controller: controller
});

});

** app2/routing.js **
define(['backbone','app2/controller'], function(Backbone, controller)
{
"use strict";
var Router = Backbone.Marionette.AppRouter.extend({

appRoutes: {
'app2': 'index2'
}

});
return new Router({
controller: controller
});

});

最佳答案

问题很可能是由加载路由器文件和创建路由器的顺序引起的。

Backbone history对象负责执行路由。当路由器被实例化时,它收集在所有路由器上定义的所有路由。然后它会监视浏览器的 url 是否有变化。当它看到变化时,它将采用第一个可用的匹配路由并触发该路由,跳过其他任何路由。

当您有 *defaults路线已定义,一切都与此相符。因此,如果首先加载此路由,则不会命中其他任何内容。因此,您需要在路由参数中更加明确,以便这条路由不会一直命中,或者您需要确保最后加载该路由器。

关于backbone.js - 如何使用主干和 requirejs 定义/使用多个路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070408/

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