1

按照 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 模板编译在 rc1 中不起作用

如何在 ember.js RC1 中指定使用带有已编译车把的视图

所以这可能看起来像重复。但是,这首先似乎使用了 Ember 指南中未指定的一些额外工作,第二个是我正在做的,但它不起作用。

4

2 回答 2

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.

希望这可以帮助某人节省一些时间:)

于 2013-03-28T09:34:14.347 回答
1

您还可以指定预期内容templateName和实际template内容:

App.PostsView = Ember.View.extend({
  templateName: 'posts',
  template: Ember.Handlebars.compile('I am the template')
});

JSBin 示例

于 2013-03-28T14:20:19.517 回答