Ember 1.11.0-beta"块只能在HTML元素或其他块中使用"错误

时间:2015-03-23 12:43:16

标签: ember.js ember-cli

我试图使用1.11 beta 4加载一些远程模板,并且当ember-template-compiler尝试编译模板时遇到错误。它抛出" A块只能在HTML元素或其他块中使用"例外。我正在使用以下代码编译模板:

var compiledTemplate = Ember.Handlebars.compile(templateText);

有没有人见过这个?模板是:

<p{{#id}} id="{{id}}"{{/id}} data-name="{{name}}" class="flag {{#alert}}{{type}} {{type}}-input{{/alert}} {{styleClass}}{{^alert}} hide{{/alert}}">
  <span{{#id}} id="{{alertSevId}}"{{/id}} class="alertSeverity icon">
    {{#alert}}{{type}}{{/alert}}
  </span>
  <span{{#id}} id="{{alertMsgId}}"{{/id}} class="alertMessage">
    {{#alert}}{{message}}{{/alert}}
  </span>
</p>

3 个答案:

答案 0 :(得分:6)

我正在学习Ember,今天我遇到了同样的错误信息"Error: A block may only be used inside an HTML element or another block."

然而,我正在使用Ember v1.10。

我正在编写一个教程,并注释掉了我的部分HTML,因此我可以尝试其他方法:

<script type="text/x-handlebars" data-template-name="logs">
    <section>
        <ul>
            {{#each log in model}}
            <li>{{log.name}}</li>
            {{/each}}
        </ul>

       <!--<ul>-->
       <!--{{#each dev in controller}}-->
       <!--<li>{{dev}}</li>-->
       <!--{{/each}}-->
       <!--</ul>-->
       <!--<button {{action "clickMe"}}Click me!</button>-->
       <!--<p>{{renderedOn}}</p>-->
    </section>
</script>

当我尝试查看新更改时,没有显示任何内容。我确信这是因为我添加了新的无序列表或者我对我的JavaScript所做的更改,但我的错误来源是注释掉的HTML。我删除了它,一切都按预期运行。

我更多地了解了这种情况,我观察到了:

  • 如果我用块语句将代码部分注释掉,而不是行注释按预期工作
  • 如果我离开第一行注释掉的代码并删除其他代码,则按预期工作

那么,通过消除过程,我发现罪魁祸首正在评论每个帮助者:

   <!--{{#each dev in controller}}-->
   <!--{{/each}}-->

我知道这与你的设置并不完全相同,但希望它可以指出你正确的方向来解决你的问题。

答案 1 :(得分:3)

您正在尝试添加&#34;块&#34;表示为&#34;#&#34;在标签内。这是无效的。尝试删除&#34;#&#34;来自{{#id ...}}

答案 2 :(得分:1)

如果定义了html属性,似乎要有条件地设置它。要做到这一点,你可以翻译这个胡子: <div {{#id}}id="{{id}}" {{/id}}> ...进入此Ember hbs模板(注意{{id}}周围缺少引号): <div id={{id}}> 您将获得相同的结果: 已设置ID - <div id="foo"> 尚未设置ID - <div > 避免这种不良后果 - <div id="">