Я пытаюсь вычислить сумму поля «цена» для наблюдаемого массива. У меня есть следующий код до сих пор:Использование ko.utils.arrayForEach для итерации над наблюдаемымArray
(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);
}());
Когда я пытаюсь запустить это, я получаю «Ошибка: this.features не является функцией» в консоли Firebug.
Что я делаю неправильно?
я пошел с первым подход, теперь я не могу получить доступ к this.price() ' – nthapa13
Наконец, я использовал (я абсолютно не знаю, как это работает) ---' var self = this; $ .each (self.features(), function() { всего + = this.price(); }) ;, но использование ko.utils.arrayForEach все еще не работает, благодарю вас за ваш ответ. – nthapa13
@ Nthapa13 Я не заметил синтаксиса, который вы использовали в этой части. Я обновил приведенные выше ответы, чтобы показать, что функция, указанная в 'ko.utils.arrayForEach', получает этот элемент в качестве первого аргумента, тогда вам не нужно использовать' this' в функции. –