加上两个数字,然后减去数字取决于复选框
Add 2 numbers then subtract numbers depending on checkbox
下面是我要做的事情的概要:
http://jsfiddle.net/5MxwV/1/我有点卡住了,因为我发现你不能输入一个依赖的可观察对象并让它更新。基本上你有两个数字。把它们加起来4 + 5 = 9。现在,当您点击一个复选框(或者如果没有复选框也可以这样做)时,禁用第二个数字(5),并允许输入最后一个数字(9)。所以你可以在9所在的最后一个框里输入公式就是9 - 4这样就得到了第二个数字。所以你可以把9改成10,也就是10 - 4 = 6。
// Here's my data model
var viewModel = {
firstNum : ko.observable(4),
lastNum : ko.observable(5),
reverse : ko.observable(false)
};
viewModel.add = ko.dependentObservable(function () {
return parseInt(viewModel.firstNum()) + parseInt(viewModel.lastNum());
});
ko.applyBindings(viewModel); // This makes Knockout get to work
<p>First Number: <input data-bind="value:
firstNum , valueUpdate:'afterkeydown'" /></p>
<p>Next Number <input data-bind="value: lastNum, valueUpdate:'afterkeydown', disable : reverse" /></p>
<p>Last Number:<input data-bind="value: add, valueUpdate:'afterkeydown', enable : reverse" /></p>
<p>Subtract : <input type="checkbox" data-bind="checked: reverse" ></p>
<br />
<p data-bind="text: ko.toJSON(viewModel)"></p>
对于这种情况,您将需要考虑使用writeable dependentObservable
。
可能看起来像:
viewModel.add = ko.dependentObservable({
read: function() {
return parseInt(this.firstNum(), 10) + parseInt(this.lastNum(), 10)
},
write: function(newValue) {
this.lastNum(parseInt(newValue, 10) - parseInt(this.firstNum(), 10));
},
owner: viewModel
});
所以,这个想法是你的read
函数返回值和write
函数拦截写,并允许你逆转你的逻辑和更新适当的可观察对象。
您没有正确配置dependentObservable。您必须将视图模型本身作为参数传入。然后在dependentObservalbe中,使用"this"来引用视图模型。
我已经更新了提琴在http://jsfiddle.net/photo_tom/5MxwV/2/
相关文章:
- 显示数字,然后每5秒随机更改一次(javascript)
- 将 JavaScript “for” 生成的数字推送到一个数组中,然后将每个数字打印为 HTML
- Javascript - 先排序字母,然后排序数字
- Javascript:编写一个函数,接收一个数组,然后返回一个只有唯一数字的数组,只删除数组
- 用户在数字上输入金额,然后输出最高数字javascript
- 接收输入数字,直到用户输入零.然后输出最高.JavaScript
- 生成一个随机数字序列,然后用JavaScript在该序列后面附加一个大写字母
- 需要用户输入一个随机数,然后提醒用户数字 ibnputted
- 我想创建一个长度取决于用户输入的数组,然后尝试找到数组中所有数字的总和
- AngularJS如何获取一个数组,该数组将数字添加到函数中的元素,然后用另一个函数分散其注意力
- 重复数字达到极限,然后循环它
- 如何用变量定义一个数组,然后用一个数字填充每个数组
- JQuery:将数字相乘到单独的数组,然后得到结果的总和
- AngularJS:将对象中的两个数字相乘,然后得到总数
- 我是否可以动态更改带有数字的图像,然后将其打印为 PDF
- 按数字排序列表,然后使用 jQuery 按字母顺序排序
- 尝试通过AJAX发送数字,然后将它们添加到我的数据库中
- 将一个元素乘以一个数字,然后使用jQuery插入
- 使用提示,选择数字的数目,将该数目添加到数组中,然后显示总数
- 按布尔值,然后按数字(javascript)对对象数组进行排序