如何使用为Emberjs视图的数组对象设置新值?

时间:2016-11-02 09:39:56

标签: ember.js

如何使用为Emberjs视图的数组对象设置新值?
所以我有一张我的数据表;然后,当我单击编辑按钮时,我想要更改该按钮的父<tr>的类。

所以我在我的观点中有这个。

{{#each model as |lineItem index|}}
    <tr class="{{ tableRowIndex[index] }}">
        <td>
            <ul class="dropdown-menu pull-right">
                  <li>
                    <a href="#"
                      {{ action 'editLineItem' this index }} >
                      Edit
                    </a>
                  </li>
            </ul>
        </td>
    </tr>
{{/each}}

这是我的控制器

tableRowIndex: computed(function(){

    let array = [];

    this.get('model').forEach(function(){
      array.push("");
    });

    return array;
}),
actions: {
    editLineItem(button,index) {
        console.log(this.get('tableRowIndex'));
        this.set('tableRowIndex[index]','editing-row');
        console.log(this.get('tableRowIndex'));
    },
}

但它没有成功

console.log(this.get('tableRowIndex'));

在我跑

之前和之后输出相同的结果
this.set('tableRowIndex[index]','editing-row');

那么我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

如果您希望设置计算属性,请考虑使用get和set函数定义它。(refer)。 在您的情况下,您只需引入tableRowIndex并根据路由的setupController挂钩中的model属性对其进行初始化

setupController(controller,model){
   this._super(...arguments);
    let array = [];    
        this.get('model').forEach(function(){
          array.push("");
        });
    controller.set('tableRowIndex',array);
 }

并在controller.js中,

actions: {
        editLineItem(button,index) {
            console.log(this.get('tableRowIndex'));
            this.get('tableRowIndex').objectAt(index,'editing-row')
            console.log(this.get('tableRowIndex'));
        },
    }