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 相关文章推荐
JQuery 常用操作代码
Mar 14 Javascript
javascript中的float运算精度实例分析
Aug 21 Javascript
script标签的 charset 属性使用说明
Dec 04 Javascript
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
JS字符串处理实例代码
Aug 05 Javascript
jQuery实现checkbox全选的方法
Jun 10 Javascript
Bootstrap布局组件应用实例讲解
Feb 17 Javascript
Google 地图叠加层实例讲解
Aug 06 Javascript
d3.js中冷门却实用的内置函数总结
Feb 04 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
Feb 09 Javascript
js中的事件委托或是事件代理使用详解
Jun 23 Javascript
JavaScript实现多态和继承的封装操作示例
Aug 20 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/06/20 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
PHP中防止SQL注入实现代码
2011/02/19 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
python实现文法左递归的消除方法
2020/05/22 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
StringBuilder和String的区别
2015/05/18 面试题
如何用JQuery进行表单验证
2013/05/29 面试题
党员创先争优活动总结
2014/05/04 职场文书
财产分割协议书
2016/03/22 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python