使用ko.utils.arrayForEach对observableArray进行迭代
Using ko.utils.arrayForEach to iterate over a observableArray
我正在尝试计算"observableArray"的"price"字段的和。到目前为止,我有以下代码:
(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);
}());
当我尝试运行这个时,我在firebug控制台中得到一个"错误:this.features不是函数"。
我做错了什么?
在创建过程中会立即评估计算的可观察性。在您的情况下,appViewModel
尚未创建,this
将不代表appViewModel
。
在这种情况下,有很多方法可以确保this
是正确的。这里有两个:
-
在初始对象文字之外创建它:
var appViewModel = { features: ko.observableArray([ new objFeatures("Feature1", 20), new objFeatures("Feature2", 20) ]) }; appViewModel.grandTotal = ko.computed(function() { var total = 0; ko.utils.arrayForEach(this.features(), function(feature) { total += feature.price(); }); return total; }, appViewModel);
-
在函数中创建视图模型:
var AppViewModel = function() { this.features = ko.observableArray([ new objFeatures("Feature1", 20), new objFeatures("Feature2", 20) ]); this.grandTotal = ko.computed(function() { var total = 0; ko.utils.arrayForEach(this.features(), function(feature) { total += feature.price(); }); return total; }, this); }; ko.applyBindings(new AppViewModel());
相关文章:
- 如何在javascript中迭代数字列表
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 如何迭代Array.prototype函数
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 在ejs-partial中对JSON对象进行迭代
- 如何在DataTables 2.1中迭代对象数组
- 使用递归属性迭代保留属性结构
- 正在停止.在jquery中的特定时间间隔内,每次迭代的每次执行
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 主干-从模板中迭代的集合中获取特定的模型
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 什么's是在javascript中迭代项的最佳方式
- 为什么这只是迭代 HTMLCollection 的奇怪元素
- 是否“;对于的“;循环迭代遵循JavaScript中的数组顺序
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- 在es6中,将带有回调的事件侦听器设置为可迭代的
- jQuery-迭代不正确?(太长,无法执行)
- 每个$.,循环获胜't逐个迭代HTML元素
- 如何在Jquery中迭代JSON数组
- 从JSON API结果迭代时未定义