举个简单的例子:文本框输入货币数据.要求是以"$ 1,234,567"格式显示用户输入并删除小数点.
我试过了vue指令.由于其他控件刷新UI时,不会调用指令的更新方法.因此,文本框中的值将恢复为没有任何格式的值.
我也试过v-on:更改事件处理程序.但我不知道如何在事件处理程序中调用全局函数.在每个Vue对象中创建货币转换方法不是一个好习惯.
那么现在Vue 2.0中标准的格式化方式是什么?
问候
Man*_*ani 33
请检查这个工作jsFiddle示例:https://jsfiddle.net/mani04/bgzhw68m/
在此示例中,格式化的货币输入本身就是一个组件,它v-model与Vue.js中的任何其他表单元素一样使用.您可以按如下方式初始化此组件:
<my-currency-input v-model="price"></my-currency-input>
Run Code Online (Sandbox Code Playgroud)
my-currency-input是一个自包含组件,在输入框处于非活动状态时格式化货币值.当用户将光标放入其中时,格式化将被删除,以便用户可以舒适地修改该值.
下面是它的工作原理:
该my-currency-input组件具有计算值 - displayValue具有定义的方法get和set方法.在该get方法中,如果输入框未激活,则返回格式化的货币值.
当用户键入输入框时,计算属性的set方法displayValue将使用值发出值$emit,从而通知父组件有关此更改的信息.
v-model在自定义组件上使用的参考:https://vuejs.org/v2/guide/components.html#Form-Input-Components-using-Custom-Events
这是一个有效的例子:https://jsfiddle.net/mani04/w6oo9b6j/
它的工作原理是在焦点输出和焦点事件期间修改输入字符串(您的货币值),如下所示:
<input type="text" v-model="formattedCurrencyValue" @blur="focusOut" @focus="focusIn"/>
Run Code Online (Sandbox Code Playgroud)
当您将光标放在输入框内时,它this.currencyValue会将其转换为纯格式,以便用户可以对其进行修改.
用户键入值并单击其他位置(焦点输出)this.currencyValue后,忽略非数字字符后重新计算,并根据需要格式化显示文本.
货币格式化程序(reg exp)是这里的复制粘贴:如何在JavaScript中将数字格式化为货币?
如果您不想要提到的小数点,则可以this.currencyValue.toFixed(0)使用该focusOut方法.
| 归档时间: |
|
| 查看次数: |
23003 次 |
| 最近记录: |