我有一个与每个助手类似的视图:
<table class="select-sect" cellspacing="0">
{{#each sections}}
<tr {{bindAttr class="highlight:highlight"}} {{action "selectSection" }}>
<td class="key">
{{#each zones}}
<em {{bindAttr style="color"}}> </em>
{{/each}}
</td>
<td class="sect">{{name}}</td>
<td class="price">{{currency lowPrice}} - {{currency highPrice}}</td>
</tr>
{{/each}}
</table>
像这样绑定动态类效果很好。如果我在控制器中设置 section.highlight == true,则视图将使用适当的类进行更新。
“调用”代码:
zone.section.set('highlight', true);
因为我需要处理每一行的一些其他事件,所以我将整个表格行迁移到嵌套视图。我正在寻找一种使动态类像以前一样工作的方法。
{{#each sections}}
{{#view SYOS.SelectSectionRowView sectionBinding="this" }}
<td class="key">
{{#each section.zones}}
<em {{bindAttr style="color"}}> </em>
{{/each}}
</td>
<td class="sect">{{section.name}}</td>
<td class="price">{{currency section.lowPrice}} - {{currency section.highPrice}}</td>
{{/view}}
{{/each}}
我认为我不能使用相同的 bindAttr 解决方案,因为它需要应用于 #view 助手。我也试过 classNameBindings & classBinding 无济于事。更新 section.highlight 不再触发此视图以应用动态类。
查看 w/ classNameBindings:
SYOS.SelectSectionRowView = Em.View.extend({
tagName: 'tr',
classNameBindings: ['isHighlighted:highlight'],
isHighlighted: function () {
return this.section.highlight;
} //also tried .property('section')
});
使用 classBinding 查看:
{{#view SYOS.SelectSectionRowView sectionBinding="this" classBinding="needsHighlight"}}
在视图类中:
needsHighlight: function () {
if (this.section.highlight) {
return 'highlight';
}
return '';
} .property('section'),
这些似乎都不起作用。任何人都可以深入了解如何实现这样的场景吗?
非常感谢!