按照模板上的Ember指南,我执行以下操作:
App.PostsView = Ember.View.extend({
template: Ember.Handlebars.compile('I am the template')
});
但没有渲染。当我使用templateName
视图 呈现时:
// html
<script type='text/x-handlebars' data-template-name='posts-template'>
<h1>I am the template</h1>
</script>
// js
App.PostsView = Ember.View.extend({
templateName: 'posts-template'
});
如何使用指南中所述的template
功能使模板正常工作?
修改
我确实遇到过这些:
emberjs template compile doesn't work in rc1
How do I specify using a view with a compiled handlebar in ember.js RC1
所以这个可能看起来像是重复的。然而,这首先似乎使用了一些未在Ember指南中指定的额外工作,第二个是我正在做的但是它无效。
答案 0 :(得分:2)
好的,这有效:
Ember.TEMPLATES['posts-template'] = Ember.Handlebars.compile('I am the template');
App.PostsView = Ember.View.extend({
templateName: 'posts-template'
});
我们发生的事情是我们的预编译模板被添加到Handlebars.templates
而不是Ember.TEMPLATES
以及我们使用返回已编译模板的事实这个,例如:
App.PostsView = Ember.View.extend({
template: Handlebars.templates['posts-template']
});
所以似乎应该避免干扰template
函数,而是总是使用templateName
,Ember.TEMPLATES
将在{{1}中寻找该名称}。
希望这有助于节省一些时间:)
答案 1 :(得分:1)
您还可以指定预期的templateName
以及实际的template
内容:
App.PostsView = Ember.View.extend({
templateName: 'posts',
template: Ember.Handlebars.compile('I am the template')
});