我正在尝试按照我从此网站购买的教程:http://www.backbonerails.com/
我跟随系列的第5集“起床与跑步 - 第1部分”。
在视频大约46:52的标记处,他有“list_controller.js.coffee”的代码。
@Demo.module "HeaderApp.List", (List, App, Backbone, Marionette, $, _) ->
List.Controller =
listHeader: ->
console.log "header"
当我有这个......一切正常......控制台读取“标题”。
在视频的大约47:20时,他将其更改为:
@Demo.module "HeaderApp.List", (List, App, Backbone, Marionette, $, _) ->
List.Controller =
listHeader: ->
headerView = @getHeaderView()
App.headerRegion.show headerView
getHeaderView: ->
new List.Header
当他更改代码时,我应该能够在浏览器中看到标题,但我没有。在萤火虫中,我收到错误:
TypeError: List.Header is not a constructor
return new List.Header;
其他相关代码在这里:
list_header.jst.eco
<div id="header" class="navbar">
<div class="navbar-inner">
<div class="container">
<div class="row">
<div class="pull-left">
<span class="brand">Backbone Poop</span>
</div>
<ul class="nav pull-right">
<li class="active">
<a href="#">link 1</a>
</li>
<li>
<a href="#">link 2</a>
</li>
<li>
<a href="#">link 3</a>
</li>
</ul>
</div>
</div>
</div>
</div>
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()
更新
所以我正在搞乱代码...不要以为我改变了什么...但我得到了控制台消息,“标题”,再次出现。但现在萤火虫说:
uncaught exception: Template undefined not found!
我已经检查过以确保目录结构的所有路径都是正确的,看不到任何问题。有什么想法吗?
更多信息
我在chrome的控制台中遇到了同样的错误。但是当我检查错误(单击箭头)并滚动到(未定义的函数)并单击其对应的“app.js:14”链接时......我可以看到:
App.addInitializer(function() {
App.module("HeaderApp").start();
return App.module("FooterApp").start();
});
看起来“HeaderApp”没有返回......重要吗?