vue货币过滤器的实现方法


Posted in Javascript onApril 01, 2017

自定义事件也可以用来创建自定义的表单输入组件,使用 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货币过滤器的实现方法

每个 Vue 实例都实现了事件接口(Events interface),即:

使用 $on(eventName) 监听事件
使用 $emit(eventName) 触发事件

v-model实现双向传递。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
Dec 06 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
Aug 23 Javascript
javascript 原型继承介绍
Aug 30 Javascript
javascipt匹配单行和多行注释的正则表达式
Nov 20 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
Apr 04 Javascript
js+cookies实现悬浮购物车的方法
May 25 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
Mar 01 Javascript
JavaScript闭包和回调详解
Aug 09 Javascript
JS常见构造模式实例对比分析
Aug 27 Javascript
React中阻止事件冒泡的问题详析
Apr 12 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
May 19 jQuery
antd form表单数据回显操作
Nov 02 Javascript
javascript 中的try catch应用总结
Apr 01 #Javascript
JavaScript 事件流、事件处理程序及事件对象总结
Apr 01 #Javascript
ES6新特性之字符串的扩展实例分析
Apr 01 #Javascript
Vue.js实战之利用vue-router实现跳转页面
Apr 01 #Javascript
ES6新特性之函数的扩展实例详解
Apr 01 #Javascript
vue-cli的webpack模板项目配置文件分析
Apr 01 #Javascript
ES6新特性之模块Module用法详解
Apr 01 #Javascript
You might like
PHP批量生成缩略图的代码
2008/07/19 PHP
php操作excel文件 基于phpexcel
2010/07/02 PHP
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
form表单序列化详解(推荐)
2017/08/15 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
vue实现虚拟列表功能的代码
2020/07/28 Javascript
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
Python里面如何拷贝一个对象
2014/02/17 面试题
土木工程毕业生推荐信
2013/10/28 职场文书
家长评语和期望
2014/02/10 职场文书
机械专业求职信
2014/05/25 职场文书
应急处置方案
2014/06/16 职场文书
自查自纠工作总结
2014/10/15 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
浅析NIO系列之TCP
2021/06/15 Java/Android
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server
Vue Element plus使用方法梳理
2022/12/24 Vue.js