修改控制器属性时,Ember不更新模板

时间:2016-12-13 17:07:05

标签: javascript ember.js

我有一个属性,我通过动作修改,但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来演示我做了什么

2 个答案:

答案 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}}