我正在使用KnockoutJS,我有一个输入控件,显示我的模型中的数字。
一切正常,但是我想在输入控件中显示之前格式化我的数字 - 但是我希望将它作为数字保存到我的视图中!所以,让我们说我有以下代码:
<td><input class='requiredNum' type='text' data-bind="value: testNum"></input></td>
我有一个函数toText(),可以将数字转换为我需要的数字。但是,这不起作用:
<td><input class='requiredNum' type='text' data-bind="value: toText(testNum)"></input></td>
我可以理解,问题是Knockoutjs不知道如何做相反的事情(从文本转换为数字) - 但这对我来说不是问题,因为我已经以另一种方式处理了这个问题。
你能推荐我一个解决方案吗?
答案 0 :(得分:4)
最简单的解决方案是使用writeable dependentObservable。
var viewModel = {
number: ko.observable(10)
};
viewModel.formattedNumber = ko.dependentObservable({
read: function() {
//do formatting on this.number() here
return this.number().toFixed(4);
},
write: function(newValue) {
//take user input and parse into a number
this.number(parseFloat(newValue));
},
owner: viewModel
});