【发布时间】:2014-12-18 12:15:52
【问题描述】:
我在 Ember 应用程序中创建了一个资源,并使用 ArrayController 来显示包含数据的表格。使用ArrayController 的sortProperties 和sortAscending 属性使表格可排序没有问题。
现在基于这两个属性的值,我需要有条件地将 CSS 样式应用于表格的列标题,但是由于 Handlebars 的逻辑有限,我需要创建一个布尔属性(sortByName、sortByValue2、@ 987654327@) 在每列的控制器上,并使用以下代码将正确的类应用于每列标题:
{{#if sortByName}}
<th {{action "setSortBy" "name"}} {{bind-attr class="sortAscending:sorting_asc:sorting_desc"}}>Name</th>
{{else}}
<th {{action "setSortBy" "name"}} class="sorting">Name</th>
{{/if}}
想象以上重复 10 次,你就会明白我在处理什么。这段代码非常冗长,根本不干。 解决这个问题的最佳方法是什么?
理想情况下,我想使用一个表达式,它在模板内部接受一个参数并返回一个带有 CSS 类名的字符串,如下所示:
<th {{action "setSortBy" "name"}} {{bind-attr class="isSortedBy('name')"}}>Name</th>
isSortedBy('name') 将返回 sorting_asc、sorting_desc 或什么都不返回。
这可以使用标准的 Ember 功能吗?这可以使用 HTMLBars 吗?
你会如何解决类似的问题?
【问题讨论】:
标签: css ember.js handlebars.js