Lor*_*ard 7 routing requirejs backbone.js backbone-routing marionette
我将我的应用分成几个应用程序.
main.js
app.js
app1/
|- routing
|- controller
|- app
app2/
|- routing
|- controller
|- app
Run Code Online (Sandbox Code Playgroud)
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();
});
Run Code Online (Sandbox Code Playgroud)
**app.js**
define([],
function ()
{
"use strict";
var app = new Backbone.Marionette.Application();
return app;
});
Run Code Online (Sandbox Code Playgroud)
**app1/rotuing**
define(['backbone','app1/controller'], function(Backbone, controller)
{
"use strict";
var Router = Backbone.Marionette.AppRouter.extend({
appRoutes: {
'*defaults': 'index1'
}
});
return new Router({
controller: controller
});
});
Run Code Online (Sandbox Code Playgroud)
**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
});
});
Run Code Online (Sandbox Code Playgroud)
问题可能是由加载路由器文件的顺序以及路由器的创建引起的.
Backbone的history对象负责执行路由.它会在路由器实例化时收集所有路由器上定义的所有路由.然后它监视浏览器的URL以进行更改.当它看到一个变化时,它将采用第一个可用的匹配路线并触发一条路线,跳过其他任何路线.
如果*defaults定义了路径,则一切都与此匹配.因此,如果首先加载此路由,则不会发生任何其他路由.因此,您需要在路由参数中更明确,以便这一条路线不会一直打到,或者您需要确保最后加载此路由器.
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |