【问题标题】:How to make Ember templates work with Rails? Error: `SCRIPT` tags are not allowed in HTMLBars templates如何使 Ember 模板与 Rails 一起使用?错误:HTMLBars 模板中不允许使用“SCRIPT”标签
【发布时间】:2016-02-20 09:30:56
【问题描述】:

我正在尝试使用 Ember for Rails 通过此视频制作搜索页面:https://www.youtube.com/watch?v=Brn_2bbr0fE

我使用这个 railscast 设置了 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"?我试着把它放在一个助手上,但它不起作用

【问题讨论】:

  • 值得注意的是,视频在 Ember 世界中已经过时了。 Ember 1.0.0-rc3 于 2013 年初发布。我建议阅读当前的 Ember 指南,以了解如何使用当前版本的 Ember。

标签: ruby-on-rails ember.js


【解决方案1】:

在 Ember 中,主要有两种声明模板的方式:

  1. 使用单独的模板文件。该文件可能具有.handlebars 或.hbs 扩展名(如您所述)。当您执行此操作时,它被称为 预编译 您的模板。 (如果您使用 Ember CLI,这主要由您处理。如果您不使用 Ember CLI,则必须自己设置此过程。)当您预编译模板时,您不 strong> 需要在script 标签中声明它们。
  2. 使用script 标记并将type 属性设置为text/x-handlebars。使用此方法,您的模板将在用户浏览器中编译为 Javascript。在大多数版本中,Ember 会自动检测这些模板并将它们放在需要的位置。如果您使用此方法,您的模板 script 标签必须在您的主 HTML 文件中(可能是 index.html)。

您目前拥有的是两种方法的组合。因为你有一个application.handlebars 文件,你必须设置你的预编译器。你会想要继续使用方法1。为此,只需将script 标记的内容放入@987654331 @文件。

<!-- 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 将正确检测您的自动完成模板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-30
    • 2016-04-17
    • 2014-05-19
    • 1970-01-01
    • 2014-03-20
    • 2022-11-25
    • 2019-12-28
    • 1970-01-01
    相关资源
    最近更新 更多