如何使用Ember.js Array forEach更改值?

时间:2013-07-31 16:52:14

标签: javascript ember.js

 self.resultList.forEach(function(item, index, enumerable){
                         console.log(self.resultList);
                         item.id=11;
                         item.get('id');
                     });

这样的项目: enter image description here

如果item.id = 11; 像这样的例外:

  

断言失败:您必须使用Ember.set()来访问此属性(   [object Object])

所以item.get('id')或item.set('id',11)

像这样的例外

  

未捕获的TypeError:对象#没有方法'get'

这个项目不是Ember的对象吗?那么项目是什么?

有人可以告诉我如何改变'itme.id的价值......

万分感谢

2 个答案:

答案 0 :(得分:21)

您可以使用Ember.set(yourObject, propertyName, value);Ember.get(yourObject, propertyName);安全地设置和获取属性。

在你的情况下:

self.resultList.forEach(function(item, index, enumerable) {
    Ember.set(item, "id", 11); 
    Ember.get(item, "id");
});

答案 1 :(得分:0)

就我而言,我是这样做的



//In my controller I've defined the array
displayInfoCheckboxes: [
    {
      turnover: {
        label: "Turnover",
        value: 1,
        propertyName: "turnover"
      }
    }, {
      pl: {
        label: "P&L",
        value: 1
      }
    }
]

//and in my handler I passed the full string path to the property in the set method

let displayInfoCheckboxes = this.get('displayInfoCheckboxes');
let controller = this;

displayInfoCheckboxes.forEach(function(items,index) {
  for (var key in items) {
    controller.set('displayInfoCheckboxes.' + index + '.' + key + '.value', false);
  }
})