vue货币过滤器的实现方法
程序员文章站
2022-06-14 14:48:59
自定义事件也可以用来创建自定义的表单输入组件,使用 v-model 来进行数据双向绑定。
所以要让组件的 v-model 生效,它必须:
接受一个 valu...
自定义事件也可以用来创建自定义的表单输入组件,使用 v-model 来进行数据双向绑定。
所以要让组件的 v-model 生效,它必须:
- 接受一个 value 属性
- 在有新的 value 时触发 input 事件
代码如下:
html:
<div id="app"> <p>{{ message }}</p> <currency-input label="price" v-model="price"></currency-input> <currency-input label="shipping" v-model="shipping"></currency-input> <currency-input label="handling" v-model="handling"></currency-input> <currency-input label="discount" v-model="discount"></currency-input> <p>total: ${{ total }}</p> </div>
javascript:
vue.component('currency-input', { template: `\ <div>\ <label v-if="label">{{ label }}</label>\ $\ <input\ ref="input"\ v-bind:value="value"\ v-on:input="updatevalue($event.target.value)"\ v-on:focus="selectall"\ v-on:blur="formatvalue"\ >\ </div>\ `, props: { value: { type: number, default: 0 }, label: { type: string, default: '' } }, mounted: function () { this.formatvalue() }, methods: { updatevalue: function (value) { var result = currencyvalidator.parse(value, this.value) if (result.warning) { this.$refs.input.value = result.value } this.$emit('input', result.value) }, formatvalue: function () { this.$refs.input.value = currencyvalidator.format(this.value) }, selectall: function (event) { settimeout(function () { event.target.select() }, 0) } } }) new vue({ el: '#app', data: { message: 'hello vue.js!', price: 0, shipping: 0, handling: 0, discount: 0 }, computed: { total: function () { return (( this.price * 100 + this.shipping * 100 + this.handling * 100 - this.discount * 10 ) / 100).tofixed(2) } } })
效果图如下:
每个 vue 实例都实现了事件接口(events interface),即:
使用 $on(eventname) 监听事件
使用 $emit(eventname) 触发事件
v-model实现双向传递。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 百度APP日活破2亿 过去一年用户暴增
下一篇: Vue.js render方法使用详解