一、前言

1.购物车

二、主要内容

1、效果演示如下,当我们选择商品数量改变的时候,也要让购物车里面的数据改变

2、具体实现

  (1)小球从上面跳到下面的效果

  (2)当点击上面的“加入购物车按钮”让小球显示出来(这里需要用到vue中的动画过渡)

结构如下(这是在加入购物车这个页面)

//小球

 <transition name='ball' @after-enter='afterEnter'>
<div class="ball" v-if="isExist"></div>
</transition>

  样式()

.ball-enter-active {
/*给1s的时间让小球进入动画效果*/
animation: bounce-in 1s;
} .bass-leave{
/*元素进入以后,透明度0,整个动画都是0*/
/*元素离开默认是1,所以会闪一下,设置为0*/
opacity:; }
/*这里是控制小球从上面跳到下面的动画*/
@keyframes bounce-in {
0% {
transform: translate3d(0, 0, 0);
}
50% {
transform: translate3d(140px, -50px, 0);
}
75% {
transform: translate3d(160px, 0px, 0);
}
100% {
transform: translate3d(140px, 300px, 0);
}
}

  (3)点击加入购物车,先让小球显示---->然后进入after-enter这个钩子函数之后隐藏-,

(3.1)给加入购物车按钮,注册点击事件

   <mt-button type="danger" size='small' @click='ballHandler'>加入购物车</mt-button>

    (3.2)给小球绑定一个@after-enter事件

 <transition name='ball' @after-enter='afterEnter'>
<div class="ball" v-if="isExist"></div>
</transition>

    (3.3)定义上面的事件

      data(){
return{
url:`getthumImages/${this.$route.params.id}`,
goodsInfo:{},
pickNum:1 ,
isExist:false //让小球默认是隐藏的状态,
}
}, methods:{
afterEnter(){
this.isExist=false; //显示出来之后执行这个,又将小球隐藏
},
//点击加入购物车执行这个方法,然后让小球显示出来
ballHandler(){
this.isExist=true;
},

  (4)点击加入购物车之后,需要让下面的底部导航也有一个小球,来模拟小球从上到下,然后停在下面的效果

    (4.1)在下面的底部导航(App.vue底部导航是公共组件)添加小球

<router-link :to="tab.routerName">
<img :src="tab.imgSrc">
<!--小球-->
<mt-badge size='small' color="#FC0107" v-if='index===2'>{{pickNum}}</mt-badge>
<p>{{tab.title}}</p>
</router-link>

    (4.2)调整样式

.tabBar ul li a.link-active{
background-color: pink;
position: relative;
} /*重写一下小球的样式*/
.mint-bage.is-size-small{
position: absolute;
top:;
right: 10px;
}

  (5)接下来点击上面的加入购物车,同时改变下面显示的数值(上面(Goods.vue),下面(App.vue)这是两个兄弟组件,兄弟组件之间的传值用到bus中央处理器

    (5.1)新建一个EventBus.js定义bus

import Vue from 'vue'
const EventBus = new Vue();//创建一个公共的bus
export default EventBus;

    (5.2)在main.js中挂载这个公交车

//挂载bus
import EventBus from './EventBus.js'
Vue.prototype.$bus = EventBus;

    (5.3)在App.vue(需要接收的这个组件) 一开始就让他监听,

created(){
//当你的组件一创建好了后就挂载这个bus公交车,$on这个事件监听
this.$bus.$on(`sendPickNum`, (data)=>{ //data是从另一个组件触发传来的值
this.pickNum=this.pickNum + data;
})
}

    (5.4)在Goods.vue(传数据的组件),当点击的时候让他触发那个原生的click事件

            afterEnter(){
this.isExist=false; //显示出来之后执行这个,又将小球隐藏 this.$bus.$emit('sendPickNum',this.pickNum);
}, //点击加入购物车执行这个方法,然后让小球显示出来
ballHandler(){ this.isExist=true;
// this.$bus.$emit('sendPickNum',this.pickNum); //将当前的pickNum传过去,但是这个不能加在这里,否者一点击“加入购物车就传
},

  (5.5)画图具体实现

  

三、总结

Vue(小案例_vue+axios仿手机app)_购物车的更多相关文章

  1. Vue(小案例_vue+axios仿手机app)_购物车(二模拟淘宝购物车页面,点击加减做出相应变化)

    一.前言 在上篇购物车中,如果用户刷新了当前的页面,底部导航中的数据又会恢复为原来的: 1.解决刷新,购物车上数值不变                                         ...

  2. Vue(小案例_vue+axios仿手机app)_购物车(计算商品总金额)

    一.前言                 1.计算总金额                 2.点击删除按钮,删除对应的商品信息                 3.当还没结算的时候,当用户跳到其他页面 ...

  3. Vue(小案例_vue+axios仿手机app)_公共组件(路由组件传参)

    一.前言                    1.公共轮播图的实现                    2.组件传参,公共组件的实现 二.主要内容 1.公共轮播图的实现 (1)分析:当渲染不同的轮 ...

  4. Vue(小案例_vue+axios仿手机app)_上拉加载

    ---恢复内容开始--- 一.前言                                                                                    ...

  5. Vue(小案例_vue+axios仿手机app)_实现用户评论

    一.前言 1.渲染评论列表 2.点击加载按钮,加载更多    3.提交评论 二.主要内容 1.评论列表一般是注册到一个全局的公共组件中 2.请求后台数据,渲染评论列表 (1)数据格式如下 地址 /ap ...

  6. Vue(小案例_vue+axios仿手机app)_图片列表操作

    一.前言 1.让图片还没有被完全加载出来的时候给用户提示                                       2.图片查看器 二.主要内容 1.让图片还没有被完全加载出来的时候 ...

  7. Vue(小案例_vue+axios仿手机app)_首页(底部导航栏+轮播图+九宫格)

    ---恢复内容开始--- 一.前言                        1.底部导航(两种做法)                                         2.轮播图 ...

  8. Vue(小案例_vue+axios仿手机app)_图文列表实现

    一.前言 1.导航滑动实现   2.渲染列表信息时让一开始加载的时候就请求数据 3.根据路由的改变,加载图文的改变(实现用户访问网站时可能执行的三个操作) 二.主要内容 1.导航滑动实现: (1)演示 ...

  9. Vue(小案例_vue+axios仿手机app)_Vuex优化购物车功能

    一.前言         1.用vuex实现加入购物车操作 2.购物车详情页面          3.点击删除按钮,删除购物详情页面里的对应商品 二.主要内容 1.用vuex加入购物车 (1)在src ...

随机推荐

  1. centos7中mail实测(qq邮箱)

      一.安装mailx  sendmail 1.1查看是否已经安装       yum install -y  mailx  sendmail 如果已经安装,会提示已经安装,没有安装会自动安装.   ...

  2. mysql免安装版初次使用

    在自己电脑上安装一个mysql数据库并启动,碰到一些问题,总结一下 1.下载免安装版mysql数据库,百度下载了了5.7.25版本 2.在bin文件夹下找到my-defaults.ini文件,我这没有 ...

  3. python--类属性-实类属性--静态方法总结

    类属性--类方法 实类属性--实类方法 静态方法

  4. SQLServer查询计划

    参考:http://blog.csdn.net/luoyanqing119/article/details/17022649 1. 开启方式 菜单栏:query---Display Estimated ...

  5. Autofs自动挂载探讨

    Autofs介绍: mount是用来挂载文件系统的,可以在系统启动的时候挂载也可以在系统启动后挂载.对于本地固定设 备,如硬盘可以使用mount挂载:而光盘.软盘.NFS.SMB等文件系统具有动态性, ...

  6. 为什么 npm 要为每个项目单独安装一遍 node_modules?

    nodejs中package.json中的依赖必须每个项目都有自己的node_modules文件夹,而无法在多个项目之间共用一套node_modules(像Java中的Maven那样). 依赖管理是每 ...

  7. python之迭代器、生成器、面向过程编程

    一 迭代器 一 迭代的概念 #迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 while True: #只是单纯地重复,因而不 ...

  8. SQL FORMAT() 函数

    FORMAT() 函数 FORMAT 函数用于对字段的显示进行格式化. SQL FORMAT() 语法 SELECT FORMAT(column_name,format) FROM table_nam ...

  9. day12-内置模块学习(三)

    我的博客呀,从以前的预习变成了复习了,复习的东西还没有写完,哎 今日目录 1.序列化模块 2.加密模块 3.包的使用 4.random模块 5.shutil模块 开始今日份总结 1.序列化模块 在学习 ...

  10. NetSec2019 20165327 Exp7 网络欺诈防范

    NetSec2019 Exp7 网络欺诈防范 一.本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 (1)简单应用SET工具建立冒名网站 (1分) (2)ette ...