I have create an multi-selectable table which allows you to select multiple rows; however, in order to check the current marking (whether checked OR not) I need to do the following.
Inside the table
component,
{{#each rows as |row index|}}
{{table-x-row
row=row
index=index
data=data
selected=(mut selected)
maxSelectionCount=maxSelectionCount
}}
{{/each}}
Inside the table-row
JavaScript file,
classNameBindings: ['isSelected:selected'],
isSelected: computed('selected.[]', {
get() {
const index = this.get('index');
const row = this.get('data.rows')[index];
return this.get('selected').includes(row);
}
}),
Code above triggers every time the selected list changes plus for every table-row
components which means if I have 10 rows. The computed property will get called for 10 times.
Any suggestion to solve this performance issue?
Thanks in advance.