我有一个表组件,它接收一个我称之为内容的模型。
{{my-table content=model }}
此模型将分类为计算属性(CP)。
multiSort: Ember.computed.sort('content','sortProperitsWithOrders')
我遍历multiSort
并将每一行传递给行组件
{{#each row in multiSort}}
{{my-table-row row=row columns=columns}}
{{/each}}
在每一行中我都有一个复选框组件。如果更改,则会将操作发送到其父组件(行组件)。从行中我将动作进一步发送到表组件(动作),在那里我切换行的活动属性。
问题:使用排序后,row
会丢失其活动属性,并取消选中该复选框。选中一个复选框,然后点击列标题。
我认为Ember.compute.sort
会根据sortProperitsWithOrders
获取内容并重新排列。因此,如果我在其中一个内容项目上设置了active
属性,那么我会将其放在multiSort
CP中。从multiSort
开始,它会传递给行组件,从行传递到复选框(数据向下)。
答案 0 :(得分:0)
每次排序时,您会发现每行都会创建一个MyTableRowComponent
的新实例。发生这种情况时,active
属性(源自MyTableRowComponent
)将设置为其初始值false
。
参见示例JSBin,显示在每个排序上创建的新组件 - 查看控制台日志记录。
您需要在某个地方存储active
属性所在的位置 - Customer
模型似乎是最合适的位置。
此外,我注意到MyCheckboxComponent
未从Ember.Checkbox
延伸 - 而是使用Ember.Component
- 这也可能会导致问题。