如何使用为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');
那么我该如何解决这个问题呢?
答案 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'));
},
}