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

böyle öğesi: Böyle enter image description hereEmber.js Array forEach ile değeri nasıl değiştirebilirim?

item.id = 11; eğer istisna: öylesine

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

item.get ('id') veya item.set ('id', 11)

bu

Uncaught TypeError: Object # has no method 'get'

gibi istisna

Bu, Ember'in nesnesi değil mi?

birisi bir milyon

+1

self.resultList içinde ne var yaptım? Dizinin hem basit JS Nesneleri hem de Ember Nesneleri içerdiğini düşünüyorum. – mavilein

cevap

21

Sen Ember.set(yourObject, propertyName, value); ve Ember.get(yourObject, propertyName); güvenle ayarlamak için kullanabilir ve özelliklerini alabilirsiniz .. nasıl 'en itme.id değerini değiştirmek için söyle

teşekkürler başladı. Senin durumunda

:

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

işe yaramıyor .. – seagod

+0

Herhangi bir hata alındı ​​mı? –

+0

istisna bunun gibi: Bu özelliğe erişmek için Ember.set() kullanmanız gerekir ([object nesnesi]) – seagod

0

Benim durumumda bu şekilde

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