gpt4 book ai didi

javascript - 如何更新 Ember 中的嵌套对象

转载 作者:行者123 更新时间:2023-11-27 22:48:48 24 4
gpt4 key购买 nike

我正在使用 EmberJS 2.4 编写一个应用程序。我有以下服务生成随机数据对象的对象:

export default Ember.Service.extend({
crits: {},
loadCrits() {
var newCrits = {};
var max = Math.random() * 10;
for(var i=0; i<max; i++) {
var crit = {};
var num = Math.random() * 5;
for(var j=0; j<num; j++) {
crit["data"+j] = j;
}

newCrits["crit"+i] = crit;
}

this.set("crits", newCrits);
}
});

我有一个在表格中显示数据的组件。对于每个嵌套对象的每个键值对,我都有一个按钮,以便用户可以更改值:

<table>
{{#each-in critService.crits as |key crit|}}
<tr>
<td>key</td>
<td><ul>
{{#each-in crit as |k v|}}
<li>
{{k}} = {{v}}
<button {{action "modifyCrit" crit k}}>change</button>
</li>
{{/each-in}}
</ul></td>
</tr>
{{/each-in}}
</table>

组件这样处理操作:

export default Ember.Component.extend({
critService: Ember.inject.service(),
actions: {
modifyCrit(crit, k) {
Ember.set(crit, k, "new value");
}
}
});

问题是 View 没有更新。如果我理解正确的话,这是因为 Ember 不知道如何将“crit”嵌套对象与来自的“critService”链接起来。因此,不会触发任何事件/观察者来更新 View 。

如何修改此设置,以便当用户单击按钮时, View 会更新为新值?

最佳答案

您需要更改数据结构。我给你提供一个玩意儿。请查看this twiddle

关于javascript - 如何更新 Ember 中的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38221230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com