无法使用 Handlebars 生成 class 名称

Can't use Handlebars to generate class name

我将 Ember.js 与 Rails 应用程序一起使用,但是当我想根据数据动态更改 class 名称时,出现错误。这是 Handlebars 文件:

<ul id="data-all" class="list-items">
  {{#each datum in data}}
    <li class="list-item">
      {{#link-to 'data.datum' datum.name classNames="link-item"}}
        <span class="datum-last-action datum-{{datum.name}}">{{datum.name}}</span>
      {{/link-to}}
    </li>
  {{/each}}
</ul>

以及生成的错误:

Uncaught Error: Assertion Failed: An error occured while setting up template bindings. Please check for invalid markup or bindings within HTML comments.
Uncaught Error: Something you did caused a view to re-render after it rendered but before it was inserted into the DOM.

我找到的所有文档都没有给出使用此的特殊警告,那么为什么会出现这种情况?

谢谢

你的语法有误。如果您使用的是 Ember<=1.9.1,那么它应该是:

<span {{bind-attr class=":datum-last-action datumName}}">{{datum.name}}</span>

其中 datumName 是控制器/组件中的计算 属性:

:datum-last-action 与“如果为假,什么也不做,否则打印 datum-last-action.

相同

迭代数组时,可以对整个数据对象使用映射 属性。在你的控制器中,创建一个像这样的计算 属性:

proxiedData: Ember.computed.map('data', function(datum, index) {
  return Ember.ObjectProxy.create({
    name: datum.name,
    className: "datum-" + datum.name
  });
}),

然后,在把手中:

<ul id="data-all" class="list-items">
  {{#each datum in proxiedData}}
    <li class="list-item">
      {{#link-to 'data.datum' datum.name classNames="link-item"}}
        <span {{bind-attr class=":datum-last-action datum.className"}}>{{datum.name}}</span>
      {{/link-to}}
    </li>
  {{/each}}
</ul>