无法使用Handlebars生成类名

时间:2015-01-27 11:46:49

标签: ruby-on-rails ember.js handlebars.js

我正在使用带有Rails应用程序的Ember.js,但是当我想根据数据动态更改类名时,我收到错误。这是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.

我发现的所有文档都没有发出特别警告,为什么会这样?

由于

1 个答案:

答案 0 :(得分:1)

你的语法错了。如果您使用的是Ember&lt; = 1.9.1,那么它应该是:

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

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

:datum-last-action与&#34相同;如果为false,则不执行任何操作,否则请打印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>