3

在我尝试编写的这个coffeescript+backbone.marionette 应用程序中,当我尝试在我的内容区域中显示不同的视图时,我得到一个“NoTemplateError:找不到模板:'#second-template'。

这是基于David Sulc 的 Backbone Books 教程的两段代码。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.marionette 0.9.10和0.9.11都试过了。

这里的任何帮助将不胜感激!

4

1 回答 1

1

感谢两位评论者对我的问题。在删除 HTML 和 coffeescript 代码时,我注意到我的 HTML 中的一个 div 使用<div>. 一旦我将其修复为</div>一切正常。愚蠢的错误,但直到我将 HTML 剥离到足以让它出现在我面前时,我才看到它。我需要更好的语法检查。

于 2012-08-17T14:24:30.830 回答