寻找一些建议。
我正在尝试创建一个带有淘汰赛的动态表格(它很棒,但我只是在它的第一步)。 这个表有效,但我仍然遇到一些问题: 1.(更新:已删除) 2. self.ave返回NaN,而不是所选风险的计算平均权重;
self.ave = ko.computed(function () {
var total = 0;
for (var i = 0; i < self.risks().length; i++) {
total += self.risks()[i].weight;
}
return total/self.risks().length;
});
更新:似乎每次我添加新风险时,它的权重为0.所有风险的总和计算为1(违约风险权重)+ 0(任何新风险的权重)+ 0 + N ...
update2:仍在寻找任何帮助 http://jsfiddle.net/Skaidrius/52xdL/
答案 0 :(得分:1)
有一些小错误。
对于第一个问题 - availableRisks不应该是常见的,它应该附加Activity。
var Activity = function (title) {
var self = this;
self.title = ko.observable(title);
self.availableRisks = ko.observableArray([{
name: "Low",
weight: 1
}, {
name: "Medium",
weight: 2
}, {
name: "High",
weight: 3
}]);
};
2- self.risks()[i] .weight是可观察的,因此可以用括号访问它。
self.ave = ko.computed(function () {
var total = 0;
for (var i = 0; i < self.risks().length; i++) {
total += self.risks()[i].weight();
}
return total/self.risks().length || 0;
});
为availableRisks更改视图中的绑定
<!-- ko foreach:risks -->
<td>
<select class="form-control input-sm" data-bind="options: $parent.availableRisks, value: risks.weight, optionsText: 'name'"></select>
</td>
<!-- /ko -->