我不知道如何正确地表达这个问题......我想要有两个相互观察并相应改变的变量.一个是小数,另一个是百分比.
我的模型中有一个可观察的.它从服务器端获得价值.
self.varDecimal = ko.observable(valueFromServerSide);
此变量包含十进制值.我需要的是在输入框中显示这个变量(实际上它将是带有自定义绑定的touchspin)并允许用户编辑它.但是,我需要用户编辑不是十进制值,而是百分比.
self.varPercents = ko.observable(); //should be = self.varDecimal * 100
所以:
1)当从服务器映射数据时,我需要self.varPercents从self.varDecimal(self.varDecimal() * 100)计算.
2)我需要self.varPercents在输入中显示(实际上它将是touchspin,但这是后来的),并允许用户编辑百分比.
3)用户正在编辑此百分比,我想相应self.varDecimal地更新(self.varPercents / 100).稍后将self.varDecimal发送回服务器.
是否可以使用某些KO订阅或计算或类似方式?
我知道我可以没有它,例如,当接收数据时我可以简单地计算self.varPercents,但是当将数据发送回服务器时我可以重新计算self.varDecimal,但我想知道这是否可能通过一些淘汰功能,因为实际上我有很多这样的领域,我想要一些通用的溶剂.
你需要使用可写的计算机
http://knockoutjs.com/documentation/computedObservables.html#writeable-computed-observables
this.percentage = ko.computed({
    write: function(value) {            
       this.decimal(value / 100);
    },
    read: function() {
        return this.decimal() * 100;
    }
}, this);
| 归档时间: | 
 | 
| 查看次数: | 624 次 | 
| 最近记录: |