举个简单的例子:输入货币数据的文本框。要求是以“$1,234,567”格式显示用户输入并删除小数点。
我已经尝试过 vue 指令。由于其他控件而刷新 UI 时,不会调用指令的 update 方法。因此文本框中的值会恢复为没有任何格式的值。
我还尝试了 v-on:change 事件处理程序。但我不知道如何在事件处理程序中调用全局函数。在每个 Vue 对象中创建货币转换方法并不是一个好习惯。
那么现在 Vue 2.0 中格式化的标准方式是什么?
问候
原文由 flyfrog 发布,翻译遵循 CC BY-SA 4.0 许可协议
请检查这个工作 jsFiddle 示例: https ://jsfiddle.net/mani04/bgzhw68m/
在这个例子中,格式化的货币输入本身就是一个组件,它使用
v-model
就像 Vue.js 中的任何其他表单元素一样。您可以按如下方式初始化此组件:my-currency-input
是一个独立的组件,在输入框 处于非活动状态 时格式化货币值。当用户将光标放在里面时,格式被删除,以便用户可以轻松地修改值。下面是它的工作原理:
my-currency-input
组件有一个计算值 -displayValue
,它定义了get
和set
方法。在get
方法中,如果输入框未激活,则返回格式化的货币值。当用户在输入框中输入内容时,
displayValue
计算属性的set
方法使用$emit
发出值,从而通知父组件有关此更改。在自定义组件上使用
v-model
的参考: https ://v2.vuejs.org/v2/guide/components.html#Form-Input-Components-using-Custom-Events