对象上的EmberJS pushobject

时间:2014-05-01 14:58:20

标签: javascript ember.js

我试图在一个对象上设置一个属性,就像这样。

假设我拥有名为cities的属性,并且我想拥有一个普通对象的人口值

cities: {
  'city1': 100,
  'city2': 200
}

现在,如果我想添加city3,我可以做

this.get('cities')['city3'] = 300

虽然这会更新它不会传播绑定的对象,但我可以使它成为一个数组并只使用pushObject,但我宁愿拥有它,以便在输入有关特定城市的信息时,如果它已经存在,它只是更新旧数据。

那么有没有办法让它和可观察到的?

由于

甚至使用

进行编辑
  

this.set(' cities.city1' 100)

因为我可以观察@each而没有通知变更,我使用了这个答案的技巧让它发挥作用。

Observe properties on nested object

2 个答案:

答案 0 :(得分:2)

您应该使用set代替=

this.set('cities.city3', 300);

答案 1 :(得分:2)

使用=不会触发任何观察者和绑定,您需要使用set示例:

this.set('cities.city3', 300);