2013-07-31 3 views
6
self.resultList.forEach(function(item, index, enumerable){ 
         console.log(self.resultList); 
         item.id=11; 
         item.get('id'); 
        }); 

element w następujący sposób: enter image description herejak zmienić wartość za pomocą Ember.js Array forEach?

jeśli item.id = 11; wyjątkiem tak:

Assertion failed: You must use Ember.set() to access this property (of [object Object])

tak item.get ('id') lub item.set ('id' 11)

wyjątkiem jak ten

Uncaught TypeError: Object # has no method 'get'

czy ten przedmiot nie jest obiektem Ember'a, więc czym jest ten przedmiot?

może ktoś mi powiedzieć jak zmienić „wartość itme.id na ..

Dzięki milion

+1

co jest w środku self.resultList? Myślę, że tablica zawiera zarówno zwykłe obiekty JS, jak i obiekty Ember. – mavilein

Odpowiedz

21

Można użyć Ember.set(yourObject, propertyName, value); i Ember.get(yourObject, propertyName); aby bezpiecznie ustawić i inne właściwości.

W twoim przypadku:

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

to nie działa. – seagod

+0

Czy otrzymałeś błąd? –

+0

wyjątek podobny do tego: Musisz użyć Ember.set(), aby uzyskać dostęp do tej właściwości (obiektu [Object Object]). – seagod

0

W moim przypadku zrobiłem to w ten sposób

//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); 
 
    } 
 
})