Tôi đang cố tính tổng của trường 'giá' của 'observableArray'. Tôi có đoạn code sau cho đến nay:Sử dụng ko.utils.arrayForEach để lặp qua một ObservableArray
(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);
}());
Khi tôi cố gắng chạy này, tôi nhận được một "Lỗi: this.features không phải là một chức năng" trong bảng điều khiển firebug.
Tôi đang làm gì sai?
tôi đã đi với người đầu tiên phương pháp tiếp cận, bây giờ tôi không thể truy cập 'this.price()' – nthapa13
Cuối cùng tôi được sử dụng (Tôi đã hoàn toàn không có ý tưởng làm thế nào điều này làm việc) --- 'var tự = này; $ .each (self.features(), function() { tổng số + = this.price(); }); 'nhưng sử dụng ko.utils.arrayForEach vẫn không hoạt động, cảm ơn bạn đã phản hồi. – nthapa13
@ Nthapa13 Tôi không nhận thấy cú pháp bạn đang sử dụng trên phần đó. Tôi đã cập nhật các câu trả lời ở trên để chỉ ra rằng hàm mà bạn chỉ định trong 'ko.utils.arrayForEach' nhận được đối số đầu tiên của nó, sau đó bạn không cần sử dụng' this' trong hàm. –