我正在开发一个enpe-rails应用程序,它通过rails管道预编译Handlebar资产。一切都通过bundle update
更新到最新版本。
当我们加载索引时,余烬数据不会呈现到列表中,尽管(app/view/gigs/index. html.erb):
<h1>Gigs</h1>
<script type="text/x-handlebars">
{{ view App.ListGigsView }}
</script>
<script type="text/javascript">
$(function() {
App.gigsController.loadAll(<%= @gigs.to_json.html_safe %>);
});
</script>
所以,我检查了ListGigsView,其中包含以下内容(app/资产/javascricript/app/view/gigs/list. js):
App.ListGigsView = Ember.View.extend({
templateName: 'app/templates/gigs/list',
gigsBinding: 'App.gigsController',
showNew: function() {
this.set('isNewVisible', true);
},
hideNew: function() {
this.set('isNewVisible', false);
},
refreshListing: function() {
App.gigsController.findAll()
}
});
看起来templateName指向正常(这类似于new. js)。尽管如此,浏览器控制台(GoogleChrome版本25.0.1364.172)一直返回以下内容:
未捕获错误:断言失败:您指定了templateName应用程序/模板/gigs/列表
这是应用程序/资产/javascript/应用程序/模板/gigs/list. handlebar中的文件:
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody>
{{#each gigs}}
{{view App.ShowGigView gigBinding="this"}}
{{/each}}
{{#if isNewVisible}}
<tr>
<td>*</td>
<td>
{{view App.NewGigView}}
</td>
</tr>
{{/if}}
</tbody>
</table>
<div class="commands">
<a href="#" {{action "showNew"}}>New Gig</a>
<a href="#" {{action "refreshListing"}}>Refresh Listing</a>
</div>
为什么模板没有渲染?在控制台中运行Ember. TEMPLATES
会原封不动地返回所有其他视图模板链接:
> Ember.TEMPLATES
=> Object {app/templates/gigs/edit: function, app/templates/gigs/event: function, app/templates/gigs/show: function, application: function}
但不是list
的那个。为什么那个模板是AWOL?
>
作为参考,我正在根据浏览器控制台运行以下内容:
Ember. VERSION:1.0.0-rc.1 emer.js:339 Handlebar.VERSION:1.0.0-rc.3 emer.js:339 jQuery.VERSION:1.9.1
-编辑:我刚刚发现,在index. html.erb中包含对事件视图的Handlebar引用也会导致该模板消失:
<h1>Gigs</h1>
<script type="text/x-handlebars">
{{ view App.ListGigsView }}
</script>
<script type="text/x-handlebars">
{{ view App.EventView }}
</script>
<script type="text/javascript">
$(function() {
App.gigsController.loadAll(<%= @gigs.to_json.html_safe %>);
});
</script>
为什么会发生这种情况?我如何避免它?
应用程序/模板/
默认从模板名称中删除。尝试gigs/list
。
对我来说,它在剥离模板
时有效,例如app/gigs/list
。