3

私が書き込もうとしているこのcoffeescript+backbone.marionetteアプリケーションでは、コンテンツ領域に別のビューを表示しようとすると、「NoTemplateError:テンプレートが見つかりませんでした:'#second-template」が表示されます。

これは、 DavidSulcのBackboneBooksチュートリアルに基づく2つのコードです。WelcomeAppは正常に表示されますが、MyApp.SecondApp.display()を呼び出すメニュー項目をクリックすると、NoTemplateErrorが発生します。

window.MyApp = MyApp = new Backbone.Marionette.Application()

MyApp.addRegions
  menu: '#menu'
  content: '#content'

class MyApp.MenuView extends Backbone.Marionette.View
  el: '#menu'

  events:
    'click #get-second': 'showSecond'

  showSecond: ->
    MyApp.SecondApp.display()

MyApp.vent.on 'welcome:rendered', ->
  menu = new MyApp.MenuView()
  MyApp.menu.attachView(menu)


MyApp.WelcomeApp = do ->
  WelcomeApp = {}

  class WelcomeLayout extends Backbone.Marionette.Layout
    template: '#content_welcome-template'

  WelcomeApp.display = ->
    WelcomeApp.layout = new WelcomeLayout()

    WelcomeApp.layout.on 'show', ->
      MyApp.vent.trigger 'welcome:rendered'

    MyApp.content.show MyApp.WelcomeApp.layout

  return WelcomeApp


MyApp.SecondApp = {}

class MyApp.SecondApp.WelcomeView extends Backbone.Marionette.ItemView
  template: '#second-template'

MyApp.SecondApp.display = ->
  welcomeView = new MyApp.SecondApp.WelcomeView()
  MyApp.content.show welcomeView

MyApp.addInitializer ->
  MyApp.WelcomeApp.display()

私のテンプレートは、index.htmlの単なるスクリプトブロックです。私は実際にWelcomeAppで使用されているテンプレートをSecondAppで使用されているテンプレートと交換しましたが、これを行うと、WelcomeAppは「#second-template」を正常に見つけることができます。

私はbackbone.marionette0.9.10と0.9.11の両方でこれを試しました。

ここでの助けは大歓迎です!

4

1 に答える 1

1

私の質問に対する両方のコメント投稿者に感謝します。HTMLとcoffeescriptコードを削除する作業をしているときに、HTMLのdivが。を使用して誤って閉じられていることに気付きました<div>。私がそれを修正したら、</div>すべてがうまくいきました。ばかげたエラーですが、HTMLが自分の顔にぴったり合うように削除するまで、表示されませんでした。より良い構文チェックが必要です。

于 2012-08-17T14:24:30.830 に答える