购物开发
流程
- 1 主页(路由跳转)
- 2 配置路由
- 3 创建路由跳转的组件
- 4 编写接口 暴露接口
- 5 调用接口请求数据
- 6 渲染到页面
开发总结
1 时间戳过滤器
moment依赖
安装
cnpm i moment -S
配置
- src/filters/dataFmt/index.js
import Vue from 'vue'
import moment from 'moment'
Vue.filter('datafmt', data => {
return moment(data).format('YYYY-MM-DD HH:mm:ss')
})
使用
<p>上架时间:{{data.add_time | datafmt}}</p>
2 加入购物车半场动画
定义
<transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter">
<div class="ball" v-show="ball"></div>
</transition>
<van-button type="danger" size="small" @click="addCar" :disabled="flag">加入购物车</van-button>
配置
- 必须带单位px
- 动画没走完时,禁用按钮
- 在点击事件中绑定,点击后禁用,定时器时长大于动画时长(改变按钮状态)
data: () => {
return {
ball: false,
flag: false
}
},
methods:{
beforeEnter (el) {
el.style.transform = 'translate(0,0)'
},
enter (el, done) {
const ball = document.querySelector('.ball').getBoundingClientRect()
const add = document.querySelector('.van-info').getBoundingClientRect()
const x = add.x - ball.x
const y = add.y - ball.y
el.offsetLeft
el.style.transform = `translate(${x}px,${y}px)`
el.style.transition = 'all 0.4s ease'
done()
},
afterEnter () {
this.ball = !this.ball
},
addCar () {
this.ball = !this.ball
this.flag = true
setTimeout(()=>{
this.flag = false
},500)
},
}
使用
<van-button type="danger" size="small" @click="addCar" :disabled="flag">加入购物车</van-button>
总结
- getBoundingClientRect 可以获取元素位置