Javascript js双向绑定:数字格式为字符串
在我的视图模型中,我有一堆可以观察到的量,我希望它们以数字的形式存储,因为它们在一些计算中使用。但是,当我将它们绑定到视图中的文本框时,我希望它们显示为特殊格式的字符串(1234.5678=>“1234.57”)。在这种情况下,实现双向绑定的最佳方法是什么,因为我不能只使用值绑定和我的可观察对象 用户需要能够在文本框中输入“1234.56”或“1234.56”,这将在observable中存储数字值1234.56,如果我通过javascript更改数字值(3450),文本框值需要更新为新值,但格式为字符串(“3450”)Javascript js双向绑定:数字格式为字符串,javascript,knockout.js,knockout-mapping-plugin,knockout-2.0,knockout-validation,Javascript,Knockout.js,Knockout Mapping Plugin,Knockout 2.0,Knockout Validation,在我的视图模型中,我有一堆可以观察到的量,我希望它们以数字的形式存储,因为它们在一些计算中使用。但是,当我将它们绑定到视图中的文本框时,我希望它们显示为特殊格式的字符串(1234.5678=>“1234.57”)。在这种情况下,实现双向绑定的最佳方法是什么,因为我不能只使用值绑定和我的可观察对象 用户需要能够在文本框中输入“1234.56”或“1234.56”,这将在observable中存储数字值1234.56,如果我通过javascript更改数字值(3450),文本框值需要更新为新值,但格
我感谢你的帮助 我将实现如下内容: JavaScript:
function ViewModel() {
var self = this;
self.dollarAmount = ko.observable();
self.formattedDollarAmount = ko.computed({
read: function() {
return applyFormat(self.dollarAmount()); // pseudocode
},
write: function(value) {
var parsedDollarAmount = parseFloat(value);
if(!isNaN(parsedDollarAmount)) {
self.dollarAmount(parsedDollarAmount);
}
else {
// recommend adding validation of some sort
// so getting here is less likely
alert("invalid dollar amount");
}
},
owner: self
});
}
HTML:
有关更多信息,请参阅有关计算可观测值的文档:请参阅:
})
原职:
<input type="text" data-bind="value: formattedDollarAmount" />
ko.bindingHandlers.numericValue = {
init : function(element, valueAccessor, allBindingsAccessor) {
var underlyingObservable = valueAccessor();
var interceptor = ko.computed({
read: underlyingObservable,
write: function(value) {
underlyingObservable(rawNumber(value));
}
});
ko.bindingHandlers.value.init(element, function() { return interceptor }, allBindingsAccessor);
},
update : function(element, valueAccessor, allBindingsAccessor) {
element.value = number_format(valueAccessor()(), 2);
}