数组上的挖空子对象具有最后一个项的值
knockout child objects on array have the value of last item
我很困惑,为什么即使我的成分在列表中正确填充并呈现,当我更改例如第一个成分的"剂量参考系统"的值时,它会与剂量参考系统的值混淆数组中最后一项?
每行中的值不会根据该行中的值进行更新
任何帮助将不胜感激:
这是小提琴:http://jsfiddle.net/makeitmorehuman/C6AvC/
此处供参考的代码是:
function ingredient(data) {
ingr = this;
ingr.Name = ko.observable(data.Name);
ingr.UnitCost = ko.observable(data.UnitCost);
ingr.DRS = ko.observable(data.DRS);
ingr.DP = ko.observable(data.DP);
ingr.PercenChange = ko.computed(function () {
return Math.round(ingr.DP() - ingr.DRS());
});
ingr.RawMaterialRS = ko.computed(function () {
return Math.round((ingr.DRS() / 100) * ingr.UnitCost() * 10000);
});
ingr.RawMaterialCostProp = ko.computed(function () {
return Math.round((ingr.DP() / 100) * ingr.UnitCost() * 10000);
});
ingr.CostDifference = ko.computed(function () {
return Math.round(ingr.RawMaterialCostProp() - ingr.RawMaterialRS());
});
}
function ingredientsData() {
return [
{ "Name": "Skimmed milk", "UnitCost": 0.40, "DRS": 70, "DP": 87 },
{ "Name": "Cream 40% fat", "UnitCost": 1.80, "DRS": 18, "DP": 9 },
{ "Name": "Skim Milk Powder", "UnitCost": 2.5, "DRS": 12, "DP": 1 },
{ "Name": "N-Dulge SAI", "UnitCost": 3.5, "DRS": 0, "DP": 2 },
{ "Name": "Novation Indulge 1720", "UnitCost": 3.9, "DRS": 0, "DP": 1 }
];
}
function NovationIndulge() {
var self = this;
self.Ingredients = ko.observableArray();
self.init = function () {
ko.utils.arrayForEach(ingredientsData(), function (item) {
self.Ingredients.push(new ingredient(item));
});
};
function SumOfItems(propertyToSum) {
var total = 0;
ko.utils.arrayForEach(self.Ingredients(), function (item) {
total = parseInt(total) + parseInt(item[propertyToSum]());
});
return total;
}
self.TotalDRS = ko.computed(function () { return SumOfItems("DRS"); });
self.TotalDP = ko.computed(function () { return SumOfItems("DP"); });
self.TotalCostDiff = ko.computed(function () { return SumOfItems("CostDifference"); });
self.TotalRawMaterialRS = ko.computed(function () { return SumOfItems("RawMaterialRS"); });
self.TotalRawMCP = ko.computed(function () { return SumOfItems("RawMaterialCostProp") });
self.AnnualFinishedProduct = ko.observable(4000);
self.TotalCostSavingP1000 = ko.computed(function () { return self.TotalCostDiff() * -1 });
self.TotalAnnualSaving = ko.computed(function () {
return self.TotalCostSavingP1000() * self.AnnualFinishedProduct() / 1000;
});
}
var NI = new NovationIndulge();
NI.init();
ko.applyBindings(NI);
我的第一个猜测是,因为你定义了
function ingredient(data) {
ingr = this;
...
如果没有 var
关键字,它将创建一个全局属性(属于窗口)。然后,每次原型中的函数运行时,东西都会被搞砸。
这是一个很好的选择。冒犯的台词是这样的:
ingr = this;
应该是
var ingr = this;
更新的小提琴:http://jsfiddle.net/6nXYE/1/
相关文章:
- 多维关联数组的最后一个索引
- 循环以检查数组中的最后一个图像
- JavaScript,数组和函数 - 只有数组的最后一个元素有效
- 在JavaScript数组中查找最后一个元素的计算效率最高的方法
- 如何在Javascript中的对象数组的最后一个对象之后附加几个新对象
- AJAX只将数组的最后一个元素传递给MVC 5控制器
- 从数组中移除最后一个项(而不是返回项)
- PHP:获取关联数组中最后一个元素
- 我必须创建一个函数,该函数返回传入的数组的最后一个元素
- Javascript事件处理程序总是被添加到数组中的最后一个对象
- Javascript - 循环访问对象数组,仅显示最后一个对象
- 我的数组中的每个元素都被最后一个元素推入覆盖
- 数组上的挖空子对象具有最后一个项的值
- .each() 函数只输出数组中的最后一个结果
- 识别数组的最后一个元素 - javascript
- 如何获取数组数组的最后一个数字
- 将最后一个元素移动到数组中的第二个项目的最快方法
- 正则表达式:从字符到行尾匹配,没有最后一个匹配组
- 数组最后一个单元格中不需要的对象
- 如何使用Javascript和Ajax传递一个HTML选择标签到PHP $_POST与一个(数组)var当名称属性是一个