‘点击加’增加购物数量,同时’总价’也会改变;点击删除会删除该一行的商品

html代码

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><link rel="stylesheet" type="text/css" href="../font.css"/><!--font.css样式--><script type="text/javascript" src="../js/vue.js"></script><!--一定要导入vue.js--></head><body><div id="app"><div class="container"><my-cart></my-cart></div></div><script type="text/javascript">var CartTitle = { //局部组件props: ['uname'],template: `<h3 class="title">{{uname}}的购物车</h3>`}var CartList = { //局部组件,使用v-for时,切记不要将其放在跟节点中props : ['list'],template: `    <div><div :key='item.id' v-for='item in list' class="item"  ><div class="name">{{item.name}}</div><div class="change"><span  class="iconfont icon-jian" @click.prevent='sub(item.id)'></span><input type="text" class="num" style="width:90px;height:20px" :value='item.num' @blur='changeNum(item.id,$event)'/><span class="iconfont icon-jia"  @click.prevent='add(item.id)'></span><span class="del iconfont icon-shanchu" @click='del(item.id)' ></span></div></div></div>`,methods:{del:function(id){//通过父组件进行操作//    console.log(id)//把id传递给父组件this.$emit('cart-del',id);},changeNum:function(id,event){//console.log(id,event.target.value)this.$emit('change-num',{id:id,type:'change',num:event.target.value})},sub:function(id){this.$emit('change-num',{id:id,type:'sub'})},add:function(id){this.$emit('change-num',{id:id,type:'add'})}}}var CartTotal = { //局部组件props: ['list'],template: `<div class="total"><h4>总价:{{total}}</h4><button >结算</button></div>`,computed: {total: function() {//计算商品的总价var t = 0;this.list.forEach(item => {t += item.price * item.num;});return t;}}}Vue.component('my-cart', {data: function() {return {uname: '张三',list: [{id: 1,name: '苹果',price: 1100,num: 1}, {id: 2,name: 'vivo',price: 1100,num: 1}, {id: 3,name: '小米',price: 1300,num: 1}]}},template: `<div class="cart"><cart-title :uname=uname></cart-title><cart-list :list='list' @cart-del="delCart($event)" @change-num='changeNum($event)'></cart-list><cart-total :list='list'></cart-total></div>`,components: {'cart-title': CartTitle,'cart-list': CartList,'cart-total': CartTotal},methods:{changeNum:function(val){// console.log(val)  //根据子组件传递过来的数据,更新list中对应的数据//分三种情况,输入域变更,加号变更,减号变更if(val.type=="change"){this.list.some(item=>{if(item.id==val.id){item.num=val.num;//终止遍历return true;//表示终止遍历}});}else if(val.type=='sub'){this.list.some(item=>{if(item.id==val.id){item.num-=1;//终止遍历return true;//表示终止遍历}});}else if(val.type=='add'){this.list.some(item=>{if(item.id==val.id){item.num+=1;//终止遍历return true;//表示终止遍历}});}},delCart:function(id){//根据id删除list中对应的数据//1.找到id所对应的索引var index=this.list.findIndex(item=>{return item.id==id;})//2.根据索引删除对应数据this.list.splice(index,1);},handle:function(e){alert(e)}}})var vm = new Vue({el: '#app',data: {},methods:{}})</script></body>
</html>

font.css代码

@font-face {font-family: "iconfont";src: url('//at.alicdn.com/t/font_1886857_9ox2cu4fn2k.eot?t=1593417631731'); /* IE9 */src: url('//at.alicdn.com/t/font_1886857_9ox2cu4fn2k.eot?t=1593417631731#iefix') format('embedded-opentype'), /* IE6-IE8 */url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAP4AAsAAAAACVgAAAOrAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDKgqGAIRXATYCJAMUCwwABCAFhG0HRhvZBxEVnAHJfizYthBePxAroUV6JnjA76yXSQZ1utLZ+AXg6R7E7y7OeQJjoi5Hcvbk0RdSHmU5JUDA3MEx06VvYHlrG9mMoooq2qbjAQ0o8rto9KCP//T2YP7D2E3kQd4PAXjJoCCiZu2GLXFQgF0CEAP79emGkzCiKvACR2MVnKsQczFxjGnGTWCO9/PiK8WFAwamBBxs2rtWT6p+iPvgyrHRsXSkCETD2QHlIpBAQUCB6F/o7IkMIgWReK1URVnAgXYDhor1+OBGoyLqoXgrSkcUbeEfT2KAsABKP4+tGlXwIQ6zIeBDD2GR6iGvR/Iql49iANf0W/ACscBXEFkGpgcHiQqmWz4RAC6htR/p/Yp84oiHD1t6p28du83nU65bK3Als43p27Jj3Pbc3kik5ZoHM+6l9918PsMMqZVnvX7RZsaOVLl8+/StGPV5Ma5CjsMlGcuOMGLTtmRr6dacevP2FHvFjjwj9MWHWa11bq3wlcwc9vpIW/90+sCMSfrWTN6dl0gvsGOdmBEHT6apVadKhY6cyWKuPl16cMh1W6ntfJFgJNLazMxsF1gUz8I4/+IEsSRrj/4N6dNTNfwctz3v8viSYRq07PV76+uWPUVDXaTotnzbij6TDXv33LUvd/MmzXOXvd61maNzaKd60hYqDwt3kAmqfbb+8QlxHdbqAXEJ8e2zt4+htzyof7b2KkF2CFN2QtWhP2xt/xiqvQXFqKqz1qhhaINoswYVT16cDYbTwkE6gA4TgTPtLxoLeOVefVOcFTf1WW/BmSZna4h27USNs4jHJmqIRMVLd+pab1nvWip+fjnRBfK6HPDb/A0ll72e2SVU8b/jUwA8zXJ2jVcVHauQY+HdixqLfhJRwyFlS4DJVGYrFpq5Jm1w4EbLvdACP0cCYngxjDq+MR6EOj4CA5t0kDjkRCpsQTDxURIsHKqAlwLUudhHLMORCOUB8jOJA4FmDxgEOQMSzS2kwj4HkwS+g4UWEhA7r2KvuXfI72oQCkYN8g9eda1BFt75+Te07yQoLvEIL6TR+6HMinT8ii3SECeMH1sxGzDUNXDhHoYpddBTF1Bx5pj7Os9N0ZEy1TWTnSOCBIY0IP0BT+m0DJ3Odpnvv0HWWyJQRVuL8wWRkZ8flDJFA+RV2TZqu5SPjD6sCmMGMEinAS6cHSUY6YC+eF2AFJZxHUK9Wi6MM02V2fTq5h7PAF7gBWaGkEIJU1isd6JV7r3o70U7J4ql7ygnEwA=') format('woff2'),url('//at.alicdn.com/t/font_1886857_9ox2cu4fn2k.woff?t=1593417631731') format('woff'),url('//at.alicdn.com/t/font_1886857_9ox2cu4fn2k.ttf?t=1593417631731') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */url('//at.alicdn.com/t/font_1886857_9ox2cu4fn2k.svg?t=1593417631731#iconfont') format('svg'); /* iOS 4.1- */
}.iconfont {font-family: "iconfont" !important;font-size: 16px;font-style: normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;
}.icon-shanchu:before {content: "\e614";
}.icon-jian:before {content: "\e6d5";
}.icon-jia:before {content: "\e6d4";
}.icon-jian1:before {content: "\e663";
}

该案例只实现了增加数量,减少数量和删除该商品

vue中购物车的案例相关推荐

  1. vue中echarts使用案例:饼图(可直接使用)

    目录 功能.效果图: 代码实现 1.下载echarts包:终端运行 2.代码 3.运行项目:终端运行 4.可能遇到的错误 具体代码详解: 功能.效果图: 1.点击对应模块,放大并显示数据 2.点击下方 ...

  2. Vue中v-model的使用及案例

    文章目录 1. 概述 2. 使用方法 3. 案例 3.1 案例:用户登录 3.2 案例:todolist 3.3 案例:实现单个复选框 3.4 案例:实现多个复选框 3.5 案例:实现复选框全选 3. ...

  3. vue之购物车案例升级版、v-model之lazy、number、trim的使用、fetch和axios、计算属性、Mixins、虚拟dom与diff算法 key的作用及组件化开发

    文章目录 1.购物车案例升级版(含价格统计.全选/反选.商品增加减少) 2.v-model之lazy.number.trim的使用 3.fetch和axios 3.1.通过jquery+ajax实现v ...

  4. 「后端小伙伴来学前端了」Vue中Props 实现组件通信TodoList案例

    自己拍的小云彩 源码在文末. 前言 上篇文章写了个V利用Props进行组件之间的通信,这不立马就安排上这个案例拉丫.光学不敲等于没学哈(资深大佬除外哈) 目标就是实现如下的样子: 能够进行增删改查,并 ...

  5. html中购物车小球飞入的效果,vue项目中css3实现加入购物车小球抛物线飞入动画效果...

    学习Vue中在做移动端商城练习项目时,记录css3实现加入购物车抛物线小球飞入动画效果.下面会介绍我在项目中实现抛物运动的简单方法. 知识点:css3动画(抛物线运动).vue动态绑定事件(控制小球出 ...

  6. 【Vue】Vue中传值的几种方法,案例代码解析

    目录 一.反向传值(子组件传值给父组件) 二.$refs 三.$parent 四.$children 五.$attrs/$listeners -----多层传值 六.$root ----根组件 七.依 ...

  7. 01-vue(v-text,插值语法,v-html,v-model,v-on,v-bind,vue中的this,事件按键修饰符)

    01- vue是什么: <!DOCTYPE html> <html lang="en"><head><meta charset=" ...

  8. Vue中使用form表单提交刷新问题

    vue中使用表单form默认提交行为是刷新一下,在这儿我们使用事件修饰符prevent来阻止form表单的默认行为 在@click后面跟上prevent 这样就可以阻止form表单默认刷新行为了 &l ...

  9. vue中的倒计时跳转页面问题和axios网络请求this作用域问题

    一.前言 这两个是在日常开发中碰到的问题,网上都能查得到答案,但是我怕自己会忘记,姑且记录一下用作笔记吧. 二.vue倒计时跳转问题 1.案例 比如我们在一次网络请求结束之后,如果返回结果是成功,则倒 ...

最新文章

  1. R语言paste函数、paste0函数将多个输入组合成字符串实战
  2. Fedora 17 下安装codeblocks
  3. Mac下删除废纸篓内文件
  4. Google获得MapReduce专利
  5. Windows——Windows 10 加装 Windoes 7 制作双系统时,Windoes 7 启动卡在正在启动界面,并且重启无效解决方案
  6. myqsl cluster error code 2310
  7. C++学习之路 | PTA乙级—— 1017 A除以B (20分)(精简)
  8. 不懂函数式?用mobx来写react应用吧
  9. Qt5学习笔记之串口助手三:打包成Windows软件
  10. Java语言编程过程
  11. 投影仪与计算机连接方式,电脑与接投影仪、显示器的连接和设置方法
  12. 深度系统安装移动硬盘启动_教你用优启通U盘PE启动安装系统教程
  13. ActiveMQ的MQTT:WARN | Stealing link for clientId XXX From Connection Transport
  14. 如何判断/获取屏幕的状态(亮屏已解锁,亮屏未解锁,黑屏)
  15. 【LeNet-MNIST】
  16. “机器学习就是现代统计学”
  17. java object取数据_java使用ObjectInputStream从文件中读取对象
  18. Python SDK是什么
  19. java外文翻译范文_电子商务毕业论文外文翻译范文《JavaandtheInternet》
  20. 友盟+2019 UBDC大数据峰会:数据云智能 灯塔照通途

热门文章

  1. 新旧边界的破与立:一场互联网保险创新战正在悄然打响
  2. emacs如何显示行号
  3. PHP面试分布式和集群的理解,集群与分布式,你们知道有什么区别吗?
  4. 【MySQL高级篇笔记-MySQL事务日志(下) 】
  5. 互联网汽车开进景区,天猫双11期间飞猪未来景区玩出新花样
  6. 初中毕业自考计算机专业难吗,初中毕业自考本科难度大吗 都需要考什么
  7. Claris’ Contest # 4
  8. Mysql Navicat 中文乱码 utf8
  9. 1分钟链圈 | Fomo 3D 居以太坊上DApp热门排行榜榜首!世界五百强中国入榜企业超三分之一涉足区块链...
  10. Autodesk InfraWorks 2022.0.1 x64 Multilanguage