我正在尝试使用 Ember 2.8 将一个数组的元素绑定到复选框的选中属性。我也在一个组件中使用它。
复选框显示全部标记,但是每当我尝试使用该操作hideOrShowAllColumns
时,如果有一个未选中,它不会再次标记所有复选框......所以我想我传递的是数组元素的值而不是元素本身. 我不知道如何在 javascript/ember 中执行此操作...
这是我的看法
{{input type="checkbox" name="all" checked=allColumnsChecked change=(action "hideOrShowAllColumns")}}
All
{{#each model_table.columns as |column index|}}
{{input type="checkbox" name=column checked=(getItemAt allColumns index) change=(action "hideOrShowColumn" index)}}
{{column}}
{{/each}}
这是我的 component.js
export default Ember.Component.extend({
init() {
this._super(...arguments);
this.set('allColumnsChecked', true);
},
didReceiveAttrs() {
this._super(...arguments);
let columnMap = this.get('columnMap');
let allColumns = Array(columnMap.length).fill(true);
this.set('allColumns', allColumns);
},
actions: {
hideOrShowAllColumns() {
let all = this.get('allColumnsChecked');
all = !all;
this.set('allColumnsChecked', all);
if (all === true) {
let allColumns = this.get('allColumns');
allColumns = allColumns.map(() => true);
this.set('allColumns', allColumns);
}
},
}
助手 getItemAt
export function getItemAt(params) {
return params[0][params[1]];
}