使用backbone.marionette获取“NoTemplateError:找不到模板”
Posted
技术标签:
【中文标题】使用backbone.marionette获取“NoTemplateError:找不到模板”【英文标题】:Getting "NoTemplateError: Could not find template" with backbone.marionette 【发布时间】:2012-08-13 13:52:23 【问题描述】:在我尝试编写的这个 coffeescript+backbone.marionette 应用程序中,当我尝试在我的内容区域中显示不同的视图时,我收到“NoTemplateError:找不到模板:'#second-template'。
这里是基于David Sulc's Backbone Books tutorial的两段代码。 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 都试过这个。
这里的任何帮助将不胜感激!
【问题讨论】:
您的模板在<script>
s 内,但<script>
元素w.r.t 在哪里? HTML 的其余部分?里面<body>
?
我们是否需要阅读所有这些代码来帮助您解决问题?是不是不可能在一个非常排序的代码示例中重新创建问题?
我猜你的模板在<body>
里面,你通过说$('body').html(some_view.render().el)
来删除它们来启动你的应用程序。在那之后你所有的<script>
s 都会消失。
【参考方案1】:
感谢两位评论我的问题。在删除 HTML 和 coffeescript 代码时,我注意到我的 HTML 中的一个 div 使用 <div>
错误地关闭了。一旦我将其修复为</div>
,一切正常。愚蠢的错误,但直到我将 HTML 剥离到足以让它出现在我面前时,我才看到它。我需要更好的语法检查。
【讨论】:
根据原始评论者的建议回答我自己的问题。再次感谢 mu 太短和 fguillen。以上是关于使用backbone.marionette获取“NoTemplateError:找不到模板”的主要内容,如果未能解决你的问题,请参考以下文章
CoffeeScript/Backbone/Marionette - 教程示例转换和范围问题
将模型传递给 LayoutView Backbone.Marionette
使用backbone.marionette 和requireJs 的Web 应用程序的循环依赖项