我有一个属性,我通过动作修改,但Ember没有更新渲染的模板。
我的控制器:
selected_rows_id: [],
actions: {
selectRow(rowId) {
let selected_rows = this.get('selected_rows_id');
if (selected_rows.indexOf(rowId) === -1) {
selected_rows.push(rowId);
// selected_rows.pushObject(rowId); does not work either
}
this.set('selected_rows_id', selected_rows);
},
}
在我的模板中,我使用{{selected_rows_id}}
来展示我的元素
我创建了twiddle来演示我做了什么
答案 0 :(得分:2)
使用pushObject
而不是push
:
actions: {
selectRow(rowId) {
let selected_rows = this.get('selected_rows_id');
selected_rows.pushObject(rowId);
},
}
答案 1 :(得分:2)
行动没有错。问题出在模板上。另外,我的代码逻辑的另一种方法是使用addObject
来检查元素是否已经插入。
如果属性是我正在做的结构,则不能使用属性。
您必须使用{{each}}
帮助程序,它将注意呈现更新的值。
{{#each selected_rows_id as |rowId|}}
{{rowId}}
{{/each}}