2015-10-16 57 views
0

我有一个5个对象的数组,我需要循环并返回一个对象数组。但是,当我这样做时,它只返回最后一个对象5次。angular.for每个返回的对象数组重复同一个对象

我有两段代码,它们完全相同,而另一段不工作。

工作代码:(通过字符串循环,在|上分割并返回数组中的对象);

angular.forEach(exampleString, function(data) { 
    if (data.indexOf('|') !== -1) { 
     data = data.split('|'); 
     //self.model.getDataFromArray()returns an object 
     newArray.push(new self.model.getDataFromArray(data)); 
    } 
}); 

//returns array of objects

不起作用:(遍历对象,并返回一个对象,但只推最后1到阵列5次)

angular.forEach(exampleObjects, function(data) { 
    this.push(new self.model.getDataFromObject(data)); 
}, newArray); 

有什么,我”在做或不做这导致这失败?我可以说的唯一真正的区别是,我从一个分割的字符串开始,而不是从一个对象开始。

只是为了澄清,如果我做到以下几点我得到相同的重复:

angular.forEach(exampleObjects, function(data) { 
    newArray.push(new self.model.getDataFromObject(data)); 
}); 
+0

是exampleString一个字符串?或者它是一个数组?你的评估“通过字符串循环”是不正确的,你的foreach的第一个参数应该是你迭代的对象/数组。您不会迭代字符串值。 – sksallaj

+0

@sksallaj对不起,这是一串字符串。 – gardni

回答

0

我想在你的getDataFromObject方法问题的规定。该方法中的代码是什么?

+0

'getDataFromObject(data){ var obj = {}; obj =数据; obj.attr1 = data.attr1; obj.attr2 = data.attr2; return obj; } 只是简单的映射,与其他工作方法完全一样 – gardni

+0

似乎对我有用的是将var'obj = {};'改为'self.obj = {};'不知道为什么它会使区别 – gardni