【发布时间】:2013-04-05 05:10:30
【问题描述】:
我正在尝试使用木偶在“产品”模块中创建一个新的应用程序路由器,如下所示
@MyApp.module "ProductsModule", (ProductsModule, App, Backbone, Marionette, $, _) ->
class ProductsModule.Router extends Marionette.AppRouter
appRoutes:
"products" : "listGoods"
API =
listGoods: ->
console.log('list goods')
App.addInitializer ->
console.log('init app router')
new ProductsModule.Router
controller: API
更高级的App代码如下
@MyApp = do (Backbone, Marionette) ->
App = new Marionette.Application
App.addRegions
headerRegion: "#header-region"
mainRegion: "#main-region"
footerRegion: "#footer-region"
App.on "initialize:after", (options) ->
if Backbone.history
Backbone.history.start
root: '/admin/'
App
但是在尝试运行后,产品模块的 appRouter 没有运行,即 console.log 没有向控制台打印任何内容。
我错过了什么吗?
更新: 添加更多代码以显示应用的启动位置
<!DOCTYPE html>
<html>
<head>
<title>Admin</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "admin" %>
<%= csrf_meta_tags %>
</head>
<body>
<div id="wrap">
<div id="header-region"></div>
<div id="main-region" class="container">
<a href="#products">sss</a>
</div>
</div>
<div id="footer-region"></div>
//STARTING APP HERE
<%= javascript_tag do %>
$(function() {
MyApp.start();
});
<% end %>
</body>
</html>
【问题讨论】:
-
什么都没有?你启动应用了吗?
-
是的,Backbone.history.start() 确实成功启动(做了控制台日志)。只是“ProductsModule.Router”没有启动
-
不,我的意思是您是通过
App.start()启动应用程序的吗?顺便说一句,应用程序应该小写 -
是的,我做到了。让我更新 OP
-
@pfried 我已更新 OP 以显示我启动应用程序的位置。需要注意的一点是,只有在我调用 /admin 时才会触发此布局。我是否需要在路由器的某处定义一个 root: '/admin/' 以便路由可以与 /admin/product 一起使用?
标签: backbone.js router marionette