vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据
作者:狐狸家的鱼
本文链接:vue实战-实现购物车功能(四)
GitHub:sueRimn
一、过滤器filter
1.定义
- Vue.js 允许自定义过滤器,可被用于一些常见的文本格式化
- 用在两个地方:双花括号插值和
v-bind
表达式 (后者从 2.1.0+ 开始支持) - 添加在 JavaScript 表达式的尾部,由“管道”符号指示
2.注册
过滤器注册和组件相同有两种注册方式:全局注册和局部注册。
在这里,将单价运用局部注册,总价运用全局注册进行展示:
一、购物车中过滤器的运用
1.单价局部注册过滤器
单价的数字前面有一个人民币¥,我们把它用过滤器展示,然后单击保留两位小数
cart.js
filters: {//局部过滤器 单价 formatMoney: function (value) { return "¥ " + value.toFixed(2);//保留两位小数 } },
cart.html
<div class="cart-tab-2"> <!-- 商品单价 --> <div class="item-price">{{item.productPrice | formatMoney}}</div> </div>
2.总价全局注册过滤器
单价*数量=总价,我们在总价后面添加一个“元“的单位。
过滤器是 JavaScript 函数,总接收表达式的值 (之前的操作链的结果) 作为第一个参数,即money
cart.js
Vue.filter('money',(value,type) => {//全局过滤器 总价 return value.toFixed(2) + type;//保留两位小数 });
cart.html
<div class="cart-tab-4"> <!-- 商品总金额=单价*数量 --> <div class="item-price-total">{{item.productPrice*item.productQuantity | money('元')}}</div> </div>
cart.js全部代码:
Vue.filter('money',(value,type) => {//全局过滤器 总价 return value.toFixed(2) + type;//保留两位小数 }); new Vue({ el:'#app', data: { totalMoney: 0,//总金额 productList: [],//商品列表 }, filters: {//局部过滤器 单价 formatMoney: function (value) { return "¥ " + value.toFixed(2);//保留两位小数 } }, mounted: function() {//挂载 钩子 实例插入文档 this.cartView(); }, methods: { cartView: function() { let _this = this; //获取数据,返回结果 this.$http.get("../data/cartData.json", {"id":123}).then(res => {//不必在外部声明 this this.productList = res.data.result.list; this.totalMoney = res.data.totalMoney; }); } }, });
3.效果