敲除:如何对两个数字输入进行双向绑定
Knockout: How to do a two-way binding for two number inputs
我最近刚拿起KO,想做一些类似于下面的事情。
有两个输入,它们相互改变。
.HTML:
<input data-bind="value: var1" type="text">
<input data-bind-"value: var2" type="text">
脚本:
function DataViewModel() {
var self = this;
self.price = 5;
self.var1 = ko.observable(0);
self.var2 = ko.computed({
read: function () {
if(self.var1() <= 0) {
return 0;
}
return (self.var1 - 1) / self.price;
},
write: function (value) {
self.var1((Number(value) + 1) * self.price);
// Value = 7.8, output is 44 for var1,
// var2 changes to 8.6. Desired is 40 for var1 and 7.8 for var2.
},
owner: self
});
}
ko.applyBindings(new DataViewModel());
当 40 输入到 var1 中时,var2 显示 7.8。但是当 7.8 输入到 var2 中时,var1 更新为 44 而不是 40,var2 更改为 8.6。
我希望 var2 保留输入的内容,而不是经历读取功能。
http://jsfiddle.net/tyq7ejdh/2/
此表达式不正确
write: function (value) {
self.var1((value+1) * self.price);
},
尝试像这样更新
write: function (value) {
self.var1((value * self.price) + 1);
},
小提琴
相关文章:
- 敲除:如何对两个数字输入进行双向绑定
- javascript中的函数重载使两个函数名称相同,但输入数字不同
- 如何检测两个点之间的输入中的数字
- 输入两个输入,填写第三个
- 仅使用正则表达式将文本框限制为数字或两个非重复字符串之一
- 两个链接的自动更新(根据另一个中的输入)数字输入字段与JavaScript
- 如果数字在两个数字之间加/减 10 添加类
- 如何十进制验证:限制仅输入两个数值
- 如何从条形码读取两个或多个数字输入
- 如何使输入只接受两个小数,并且最多有10位数字
- 尝试将文本字段中输入的两个数字相乘,并使用jquery提示答案
- 使用javascript对asp.net中的两个数字和两个十进制值进行文本框验证
- 如果输入两个输入标签具有相同的值,则给出警报 - JavaScript 只有 jQuery
- 如何让用户输入两个字段中的任意一个
- 我想通过文本输入从用户那里得到两个整数,找出这两个数字之间的差,然后将这个数字除以25.我该怎么做呢?
- 如何在没有页面提交的情况下使用Codeigniter从输入框中获得两个数字的差值
- 在 Javascript/jQuery 中创建两个数字(包括两个数字)之间的所有整数的数组
- 提前输入两个源和自定义分隔符
- 输入两个百分比,给我第三个
- 如何只允许输入两个小数点