将复选框绑定到Ember 2+中一个数组的元素
Bind checkbox to element of one array in Ember 2+
我试图使用Ember 2.8将一个数组的元素绑定到复选框的checked属性。我还在一个组件中使用这个。
复选框显示所有已标记的复选框,但每当我尝试使用操作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}}
这是我的组件.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]];
}
对于双向绑定,不能使用基元类型。checked=(getItemAt allColumns index)
这部分不会锻炼。当您选中复选框时,它不会更新allColumns
数组值
所以我建议您在这个列数组中使用model_table.columns
,您可以检查属性,并在输入助手中使用它。
首先,model_table.columns
应该是一个对象数组。
model_table.columns = [
{
'name': 'foo',
'checked': true
},
{
'name': 'bar',
'checked': true
}
]
其次,使用htmlbar 中的属性
{{#each model_table.columns as |column index|}}
{{input type="checkbox" name=column.name checked=column.checked change=(action "hideOrShowColumn" index)}}
{{column.name}}
{{/each}
每当您更新复选框时,它都会更新相应的列。isChecked属性。
要更新相应的列,需要使用
Ember.set(column, 'checked', true)
其中column是model_table.columns
的一个元素,并检查其属性
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- JavaScript数组包含一个值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- jQuery$.inArray()总是返回-1和一个对象数组
- 在数组中的一个元素上设置多个值
- javascript处理一个对象数组以获得一个新的对象数组
- 作为一个二维数组,从ajax接收
- 你能用来自数组的属性名称生成一个对象吗
- 多维关联数组的最后一个索引
- 如何创建一个方法来验证数组的范围
- 循环以检查数组中的最后一个图像
- 在Javascript中将一个值和字符串数组转换为if语句
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何将一个对象添加到每个对象数组中
- 如何创建一个谷歌地图地理坐标数组
- 如何从另一个带下划线的数组中筛选带元素的数组
- 如何在PHP数组中加载下一个youtube
- 查找对象数组是否包含其中一个标记的最快方法
- 如何使用Javascript和Ajax传递一个HTML选择标签到PHP $_POST与一个(数组)var当名称属性是一个