Estoy tratando de calcular la suma del campo 'precio' de un 'arreglo observable'. Tengo el siguiente código hasta ahora:Usando ko.utils.arrayForEach para iterar sobre un array observable
(function(){
function objFeatures(name,price) {
return {
name: ko.observable(name),
price: ko.observable(price),
removeFeatures: function() {
appViewModel.features.remove(this);
}
}
}
var appViewModel = {
features: ko.observableArray([
new objFeatures("Feature1", 20),
new objFeatures("Feature2", 20)
]),
grandTotal: ko.computed(function() {
var total = 0;
ko.utils.arrayForEach(this.features(), function() {
total += this.price();
})
return total;
})
};
ko.applyBindings(appViewModel);
}());
Cuando trato de ejecutar esto, me sale un "Error: this.features no es una función" en la consola de Firebug.
¿Qué estoy haciendo mal?
Fui con la primera enfoque, ahora no puedo acceder 'this.price()' – nthapa13
Finalmente utilicé (no tengo absolutamente ninguna idea de cómo funcionó esto) --- 'var self = this; $ .each (self.features(), function() { total + = this.price(); }); 'pero el uso de ko.utils.arrayForEach aún no funciona, gracias por su respuesta. – nthapa13
@ Nthapa13 No noté la sintaxis que estaba usando en esa parte. Actualicé las respuestas anteriores para mostrar que la función que especifique en 'ko.utils.arrayForEach' recibe el elemento como su primer argumento, luego no necesita usar' this' en la función. –