对不起我的英语......不是很好,但我会尝试解释我的问题。我得到一个带有一些输入字段的表单,必须以货币格式显示值,但字段的属性“value”必须是float类型。恢复:我希望输入以货币格式显示其值,但不改变其浮点值。 我正在使用Knockout来进行值的绑定。 以上我的一次尝试: Html代码:
<input data-bind="value: unit_price, attr:{text: $parent.currency($data.unit_price())}" type="text" name="unit_price" class="align_right unit_price_col" />
淘汰赛:
self.currency = ko.computed({
read: function(key) {
},
write: function(value) {
console.log(value); // Value of the input
}
});
我的尝试是尝试创建一个计算函数,当值更改时,函数接收该值,将值格式化为currency,并且仅更改属性文本以显示格式化值,而不更改observable的值。 这可能吗?
谢谢
答案 0 :(得分:0)
计算隐藏真正的可观察的,只有当前版本的KO的解决方案是公开值,如
ko.extenders.currency = function(observable, options) {
var wrapped = ko.computed({
write: observable,
read: function() {
return Globalize.format(observable(), "c" );
}
});
wrapped.raw = observable;
return wrapped;
};
我已向KO团队建议他们应该引入第三个功能format
这是bindnigHandlers使用的,这样你的observable总是返回实际值,但View使用格式化的值。在此之前,这是一种做法
<强>更新强> 如果您想使用值绑定更新输入中的值,那么您需要获得更多创意,因为它将是一个字符串