首页 > 网站 > WEB开发 > 正文

vue实现货币过滤器

2024-04-27 15:13:25
字体:
来源:转载
供稿:网友

自定义事件也可以用来创建自定义的表单输入组件,使用 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实现双向传递。
上一篇:我的ionic配置

下一篇:css伪类的顺序

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表