我正在尝试使用淘汰赛 js 来考虑最优雅的方法。
假设我需要总结 3 个值,但结果总和也可以编辑......你会如何使用淘汰赛 js 做到这一点?
我正在考虑设置在用户编辑总和值时停用构成总和的值并在总和字段为空白时重新激活它们。
请参阅此 jsfiddle 作为起点:http: //jsfiddle.net/faHHB/
敲除文档中有一个类似的使用计算的 observable 分解字符串的示例:
function MyViewModel() {
this.firstName = ko.observable('Planet');
this.lastName = ko.observable('Earth');
this.fullName = ko.computed({
read: function () {
return this.firstName() + " " + this.lastName();
},
write: function (value) {
var lastSpacePos = value.lastIndexOf(" ");
if (lastSpacePos > 0) { // Ignore values with no space character
this.firstName(value.substring(0, lastSpacePos)); // Update "firstName"
this.lastName(value.substring(lastSpacePos + 1)); // Update "lastName"
}
},
owner: this
});
}
ko.applyBindings(new MyViewModel());
编辑 为了更清楚起见,我不确定如何最好地表示这种情况:
想象一下,这 3 个字段代表您的房屋价值、汽车价值、退休储蓄价值,总和代表您资产的总价值。
所有字段都应该是可编辑的,如果用户输入 3 个值,则应该计算总值。总值也可以直接编辑(如果用户有其他未列出的储蓄)。我不确定代表这一点的最佳方式......
当用户编辑总数时,我能想到的选项是:
- 将总数除以 3 并填充其他值
- 将输入值置灰,只允许用户在总值为空时再次更改。
- 有一个标记为计算的复选框,它在勾选时对值求和,并在未勾选时让用户进行编辑。
我试图询问表示这种情况的最佳方法是什么,以及如何使用淘汰赛来实现它。如果我不清楚,请道歉。
我现在已经选择了方法 3:jsfiddle.net/faHHB/10