このサイトから購入したチュートリアルに従ってみようとしています: http://www.backbonerails.com/
私はシリーズの第 5 話「Getting Up and Running - Part 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
彼がコードを変更すると、ブラウザでヘッダーが表示されるはずですが、表示されません。firebug では、次のエラーが表示されます。
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()
アップデート
だから私はコードをいじっていました...何も変更していないと思います...しかし、コンソールメッセージ「ヘッダー」が再び表示されました。しかし今、firebugは次のように言っています:
uncaught exception: Template undefined not found!
ディレクトリ構造のすべてのパスが正しいことを確認しましたが、問題はありませんでした。何か案は?
より詳しい情報
クロムのコンソールで同じエラーが発生します。しかし、エラーを調べて (矢印をクリック)、(未定義の関数) までスクロールし、対応する「app.js:14」リンクをクリックすると、次のようになります。
App.addInitializer(function() {
App.module("HeaderApp").start();
return App.module("FooterApp").start();
});
「HeaderApp」が返されないようです...重要ですか?