0

我的 Ember.js/Handlebars 模板中有一段新添加的代码,如下所示:

      {{#each day in week.days}}
        {{#if day.today}}
        <td class="active">
        {{else}}
        <td>
        {{/if}}
          <h5><b>{{day.mileage}}</b></h5>
          <br/>
          {{day.dayStr}}
        </td>
      {{/each}}

来自day.today填充的对象的位置,例如:

{
    ...
    today: dateEquals(new Date(), currentDate)
}

如果是今天,我希望(在我正在绘制的小日历中)突出显示该日期。

但是,当尝试运行它时,会发出以下错误:

[18191:0927/082737:INFO:CONSOLE(12363)] "Uncaught Error: Unclosed element `td` (on line 14).", source: file:///path/to/project/js/libs/ember-template-compiler-1.12.0.js (12363)

此错误是否来自预渲染模板?当然在运行时(“rendertime”)只会有一个<td><td class="active">,但绝不会两者兼而有之。

我该如何解决这个问题?

4

2 回答 2

2

从 Ember v1.11 开始,您可以将inline-if 助手绑定属性语法结合使用:

{{#each day in week.days}}
  <td class="{{if day.today 'active'}}">
    <h5><b>{{day.mileage}}</b></h5>
    <br/>
    {{day.dayStr}}
  </td>
{{/each}}
于 2015-09-27T12:36:04.123 回答
-1

要解决此问题,请将整个标签包含在条件分支中,以便 HTMLBars 可以“看到”您关闭标签,而不是让它挂起。像这样:

{{#each week.days as |day|}}
  {{#if day.today}}
    <td class="active">
      <h5><b>{{day.mileage}}</b></h5>
      <br/>
      {{day.dayStr}}
    </td>
  {{else}}
    <td>
      <h5><b>{{day.mileage}}</b></h5>
      <br/>
      {{day.dayStr}}
    </td>
  {{/if}}
{{/each}}

这似乎有很多重复,但我发现在修改布局时通常会减少错误。这也可能表明您可能希望将其提取到一个组件中,或者使用内联 - 如果丹尼尔在另一个答案中提到,或者制作自己的助手。

于 2015-09-28T09:58:49.670 回答