Joe*_*lly 3 knockout-mapping-plugin knockout.js
当我使用ko.mapping.toJSON它时,我将所做的任何更改转换为字符串,它们需要是数字.我尝试使用自定义映射,如下所示:
var mapping = {
'y': {
update: function(options) {
return parseFloat(options.data);
}
}
}
Run Code Online (Sandbox Code Playgroud)
...但这只会将它们作为数字保留在页面的内容中.由于我使用它来更新和由HighCharts.js引入的外部JSON,因此即使在toJSON之后,数字也需要保留数字.
从之前的答案我可以使用:
//override toJSON to turn it back into a single val
mappedData.prototype.toJSON = function() {
return parseInt(ko.utils.unwrapObservable(this.val), 10); //parseInt if you want or not
};
Run Code Online (Sandbox Code Playgroud)
...游泳工作.但是这只是JSON中的单个值类型,因此我不清楚如何使用相同的覆盖.我是否还需要在此实例中创建一个全新的对象来执行此操作.或者他们的东西更简洁?
无论何时编辑输入中的值,该值最终都将成为字符串.Knockout从元素中读取新值,它始终是一个字符串.
如果你想保持数字,请查看这个问题的答案:Knockout.js:时间输入格式和值限制,有几种方法可以做到.如果numericValue在答案中使用自定义绑定(),则无需对映射选项执行任何其他操作.如果你使用这个numericObservable想法,那么你需要使用映射选项来确保它创建这些特殊的observable而不仅仅是一个普通的observable.
否则,您也可以继续使用toJSON覆盖.
| 归档时间: |
|
| 查看次数: |
4094 次 |
| 最近记录: |