在我的申请表中,我有一个表格,里面有钱。我还有一些淘汰赛的customBinding来处理输入并为插入值添加正确的货币符号(例如:55 - > $ 55 | 55€)。
当货币符号必须在插入值之后时才会出现问题。然后,如果某人插入某个值,然后单击Backspace to my KO binding,则会出错。
示例
我的货币是€。我插入' 123'根据我的意见和我的约束力将其更改为' 123€'然后我点击Backspace,我在绑定中的值是' 123'而不是' 12'或者' 12'。所以我有问题要了解输出值应该如何。
这个问题有解决方法吗?我考虑过处理Backspace键或者用货币符号进行一些比较,但也许有人知道更好的解决方案吗?
答案 0 :(得分:0)
您可以使用extenders
ko.extenders.currency = function(target, options) {
var result = ko.computed({
read: target,
write: function(newValue) {
var current = target();
if((''+newValue).indexOf(options.currencySymbol) == -1){
if (options.position == 'left') {
target(options.currencySymbol+newValue);
} else {
target(newValue+options.currencySymbol);
}}
}
}).extend({ notify: 'always' });
result(target());
return result;
};
function AppViewModel(one, two) {
this.myNumberOne = ko.observable(one).extend({ currency: { currencySymbol : '£', position : 'left'}});
this.myNumberTwo = ko.observable(two).extend({ currency: { currencySymbol : '£', position : 'right'}});
}
ko.applyBindings(new AppViewModel(221.2234, 123.4525));