我正在尝试Ember for Rails,通过这个视频创建一个搜索页面:https://www.youtube.com/watch?v=Brn_2bbr0fE
我使用这个铁路广播设置Ember:https://www.youtube.com/watch?v=NRWMsMTY8rw
但是,我得到一个错误:
Compiler said: Error: `SCRIPT` tags are not allowed in HTMLBars templates
我的application.handlebars是:
<div id="container">
<h1>App</h1>
{{render "autocomplete"}}
<script type="text/x-handlebars" data-template-name="autocomplete">
{{input value=searchText placeholder="Search.."}}
<ul>
{{#each searchResuls}}
<li>{{this}}</li>
{{/each}}
</ul>
</script>
我不知道Ember模板是怎么工作的。一些演示有.html、.handlebars、.hbs。如何分隔data-template-name="autocomplete"?我试着把它放在帮手上,但它不起作用
发布于 2016-02-20 19:03:46
在Ember中,主要有两种方式来声明模板:
使用单独的模板文件的
.handlebars
或.hbs
扩展名(如您所提到的)。当你这样做的时候,它被称为预编译你的模板。(如果您使用的是Ember CLI,这大部分都是为您处理的。如果您不使用Ember CLI,则必须自己设置此过程。)预编译模板时,不需要在script
标记中声明它们。script
标记并将type
属性设置为text/x-handlebars
。使用此方法,您的模板将在用户的浏览器中编译为Javascript。在大多数版本中,Ember会自动检测这些模板,并将它们放在需要的地方。如果你使用这种方法,你的模板script
标签必须在你的主文件中(可能是index.html
).您目前拥有的是这两种方法的组合。因为您有一个application.handlebars
文件,所以必须设置预编译器。您将希望继续使用方法1。为此,只需获取script
标记的内容并将其放入autocomplete.handlebars
文件中。
<!-- application.handlebars -->
<div id="container">
<h1>App</h1>
{{render "autocomplete"}}
&
<!-- autocomplete.handlebars -->
{{input value=searchText placeholder="Search.."}}
<ul>
{{#each searchResuls}}
<li>{{this}}</li>
{{/each}}
</ul>
这将解决您的问题,Ember将正确检测您的自动完成模板。
https://stackoverflow.com/questions/35521387
复制相似问题