Ich dachte, ich hätte dies mit reduce()
herausgefunden, aber die Wendung ist, dass ich mehrere Eigenschaften auf jedem Datensatz zusammenrollen muss, also jedes Mal, wenn ich ein Objekt zurückgebe und Problem ist, dass previousValue
ist ein Ember-Objekt, und ich ein einfaches Objekt zurückgeben, so funktioniert es gut in der ersten Schleife, aber das zweite Mal durch a
ist nicht mehr ein Ember-Objekt, so dass ich einen Fehler bekomme sagen a.get is not a function
. Beispielcode:Ember.js: Fasse Modellrekorde in einen Datensatz zusammen
/*
filter the model to get only one food category, which is determined by the user selecting a choice that sets the property: theCategory
*/
var foodByCategory = get(this, 'model').filter(function(rec) {
return get(rec, 'category') === theCategory;
});
/*
Now, roll up all the food records to get a total
of all cost, salePrice, and weight
*/
summary = foodByCategory.reduce(function(a,b){
return {
cost: a.get('cost') + b.get('cost'),
salePrice: a.get('salePrice') + b.get('salePrice'),
weight: a.get('weight') + b.get('weight')
};
});
Ich gehe das alles falsch? Gibt es eine bessere Möglichkeit, mehrere Datensätze aus der model
in einen Datensatz zusammenzufassen, oder muss ich die Modelldatensätze entweder zuerst in einfache Objekte oder alternativ in ein Ember-Objekt in der reduce()
zurückgeben?
Edit: tun return Ember.Object.create({...})
funktioniert, aber ich würde immer noch eine gewisse Meinung gerne, ob dies der beste Weg, um das Ziel zu erreichen, oder wenn Ember bietet Funktionen, die dies tun wird, und wenn ja, ob sie sind besser als reduce
.
Verwenden Sie Glutendaten? –
@selvaraj: Ja, ich bin – redOctober13
Wo ist dieser Code? – locks