2

このサイトから購入したチュートリアルに従ってみようとしています: 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」が返されないようです...重要ですか?

4

0 に答える 0