无法使用 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>
我将 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>