我正在尝试跟随这个系列:
http://www.backbonerails.com/series/engineering_single_page_apps
我在第 5 集,大约 48 分钟。当我在浏览器中刷新页面时,我在 firebug 控制台中得到了这个:
uncaught exception: Template undefined not found
我尝试在http://coffescript.org运行我的代码,但我收到了这个错误:
ReferenceError: Backbone is not defined
我不确定,但我猜上述错误只是因为 coffescript.org 控制台不知道 Backbone 是什么而发生的。
以下是相关代码:
show_controller.js.coffee
@Demo.module "FooterApp.Show", (Show, App, Backbone, Marionette, $, _) ->
Show.Controller =
showFooter: ->
console.log "footer"
footerView = @getFooterView()
App.footerRegion.show footerView
getFooterView: ->
new Show.Footer
使用上面的代码,我在控制台中注意到“页脚”没有按应有的方式出现。所以也许控制器有问题?或“showFooter”方法中的某些内容。
list_controller.js.coffee
@Demo.module "HeaderApp.List", (List, App, Backbone, Marionette, $, _) ->
List.Controller =
listHeader: ->
console.log "header"
headerView = @getHeaderView()
App.headerRegion.show headerView
getHeaderView: ->
new List.Header
使用上面的代码,我注意到控制台中出现了“标题”,因此 HeaderApp 似乎一切正常。
show_view.js.coffee
@Demo.module "FooterApp.Show", (Show, App, Backbone, Marionette, $, _) ->
class Show.Footer extends Marionette.ItemView
template: "footer/show/templates/show_footer"
list_view.js.coffee
@Demo.module "HeaderApp.List", (List, App, Backbone, Marionette, $, _) ->
class List.Header extends Marionette.ItemView
template: "header/list/templates/list_header"
header_app.js.coffee
@Demo.module "HeaderApp", (HeaderApp, App, Backbone, Marionette, $, _) ->
@startWithParent = false
API =
listHeader: ->
HeaderApp.List.Controller.listHeader()
HeaderApp.on "start", ->
API.listHeader()
footer_app.js.coffee
@Demo.module "FooterApp", (FooterApp, App, Backbone, Marionette, $, _) ->
@startWithParent = false
API =
showFooter: ->
FooterApp.Show.Controller.showFooter()
FooterApp.on "start", ->
API.showFooter()
renderer.js.coffee
@Demo.module "FooterApp", (FooterApp, App, Backbone, Marionette, $, _) ->
@startWithParent = false
API =
showFooter: ->
FooterApp.Show.Controller.showFooter()
FooterApp.on "start", ->
API.showFooter()
app.js.coffee
console.log @
@Demo = do (Backbone, Marionette) ->
App = new Marionette.Application
App.addRegions
headerRegion: "#header-region"
mainRegion: "#main-region"
footerRegion: "#footer-region"
App.addInitializer ->
App.module("HeaderApp").start()
App.module("FooterApp").start()
App.on "initialize:after", ->
if Backbone.history
Backbone.history.start()
App
应用程序.js
//= require jquery
//= require lib/underscore
//= require lib/backbone
//= require lib/marionette
//= require_tree ./backbone/config
//= require backbone/app
//= require_tree ./backbone/apps
应用程序.css
@import "twitter/bootstrap";
@import "apps/base";
@import "apps/header";
@import "apps/footer";
这是目录结构:
app
assets
javascripts
backbone
apps
footer
show
templates
show_footer.jst.eco
show_controller.js.coffee
show_view.js.coffee
footer_app.js.coffee
header
list
templates
list_header.jst.eco
list_controller.js.coffee
list_view.js.coffee
header.app.js.coffee
config
marionette
renderer.js.coffee
app.js.coffee
application.js
stylesheets
application.css
我想知道是否根据我的目录结构正确声明了所有路径内容。
感谢您的帮助,我将热切地等待回复。