mpvue小程序实现(购物车)左滑删除
实现的思路:走了很多弯路,参考了别人的实现方法。左滑删除,就是监听滑动的事件,小程序api中有提供到和的事件。当滑动超过一定的距离,触发事件。把删除按钮显示出来,反之。
其实难点是在以什么的方式实现删除按钮的显示和隐藏。源码在最下
(1)弯路:
一开始是想到用-view的组件来实现的。交互效果能实现了,但是@,监听滑动事件时,无法动态改变-left,就无法实现滑动一定距离就显示隐藏按钮。
这里还踩了一个-view的坑,就是设置了-x,但是还无法左右滑动。
平时我们对一组元素进行横向排列时,常用:flex、float:left或行内元素性质的办法.但是,在小程序的这个组件里:flex与float:left是行不通的,在这里,我们要使用:-block利用行内元素性质来进行横向排列,并且设置为white-space:才有效果
(2)弯路:
放弃用-view,直接用普通的div来实现。我就想到直接把删除键放到滑动内容的右侧
手指向左滑动一定距离,内容向左滑动隐藏一部分,然后删除按钮向左滑动显示。就想到用浮动或者:flex来布局。效果是实现了,但是却很别扭。左滑的时候内容是向左隐藏了一部分,但是删除按钮在向左显示时,‘删除’2字也会动画的显示,很是奇怪。
最终,参考别人的布局方式,用来实现。
就是滑动的时候,只是内容在滑动(动态设置的right),跟删除按钮无关,
删除
效果已经实现了,但是到对接接口的时候,发现这个组件不能动态插入数据就是 mpvue中的slot不支持变量
坑死人了!!
然后就直接把组件的代码放到页面中,问题又来了,因为不是组件引入。每滑动一个slide,其他的slide都会相应的滑动。因为它们是根据del来改变right的。
于是为了能对分别对不同的slide进行处理,要给每个slide给一个标志位。
思路1:可以这条数据的index来进行标记,当slide 的index和data中的index相等时,添加的样式
删除