如何在控制器中将爱因斯坦的得分更新为100?
在控制器中,我有一组JSON对象,如:
items = [
{title:"John", score:24},
{title:"Einstein", score:2},
{title:"Mary", score:19}
];
使用如下组件在模板中呈现:
{{#each items as |item|}}
{{some-child-component scoreVal=item.score}}
{{/each}}
如何将爱因斯坦的得分更新为100?我只想更改该特定字段并将其反映在应用程序中。
我想避免用新的(几乎相同的)替换整个数组,因为这会导致模板中所有组件的刷新。
[FAILED]我尝试使用:
var allItems = this.get('items');
allItems[1]['score'] = 100; //ERROR
另外
this.set('items[1][score]',100); //ERROR
答案 0 :(得分:1)
你究竟想把分数设定为100?
如果你制作物品灰烬物品
items = [
{title:"John", score:24},
{title:"Einstein", score:2},
{title:"Mary", score:19}
].map(function(item) { return Ember.Object.create(item) });
您可以将设置器用作items[1].set('score', 100)
答案 1 :(得分:1)
我发现了Ember的做法:
var elem = items.objectAt(1);
Ember.set(elem, 'score', 100);
答案 2 :(得分:0)
您可以使用.findBy
查找记录并为其指定新值。
如果您没有将Ember数据用于数据层,那么我还会创建对象数组Ember Objects,以便您可以使用.get
和.set
来更新属性。
这是你正在努力完成的full JSBin。