| 为什么要使用nuve | 因为项目的平板端(安卓app)涉及到map组件,而app端使用nvue文件才能发挥map组件的作用,不会有些api用不了 官网也有提到(下图) |
|---|
| 为什么要两个滚动 | 因为开发的平板使用的app,左边菜单是固定的,所以右边需要滚动; |
|---|
| 为什么需要替代方案 | 因为相同方向的两个滚动组件(list,scroll-view)其中子组件会滚动不了,官网也有提到(下图) ; 之前也使用过subNVue 原生子窗体,想着子窗体应该不会影响,确实是没有影响,但是出现两个问题: 1、由于我是使用组件进行内容滚动,子窗体设置position为static无法跟着页面滚动; 2、为了解决第一个问题,设置根据滚动条设置位置,但是滚动起来子窗体是在抖着动,用户体验不好,所以摈弃了原生子窗体的方案 |
|---|
1、先看替代方案的实现效果(只能说是可以用,各位大佬有其他方案可以评论区提一提)
2、如何实现
- 寻找替代组件 既然滚动组件不行,那其他组件是否可以,直到我看到安全验证的滑块
这个滑块不也是类似滚动的嘛,立马操作起来
使用的组件官网链接
movable-area | uni-app官网 (dcloud.net.cn)
部分代码实现,实现穿梭框左边部分
<movable-area style="width: 302px; height: 530px; position: relative" v-if="showLeftData.length > 0">
<movable-view
:direction="directionLeft"
:damping="16"
:friction="1"
x="0"
:y="y"
:style="{ width: '292px', height: listLengthHeight }"
@change="onChangeLeft"
>
<u-checkbox-group v-model="groupAllLeft" placement="column" activeColor="#EB6100" style="width: 292px">
<u-checkbox
v-for="(item, index) in showLeftData"
style="margin-top: 4px; margin-bottom: 10px; margin-left: 10px; width: 282px"
:checked="item.check"
:label="item.realName"
:key="item.uid"
:name="item.uid"
></u-checkbox>
</u-checkbox-group>
</movable-view>
</movable-area>
- 实现过程出现的问题
- 由于我是实现类似穿梭框的功能,需要搜索功能,但是滑块滑动到某一位置后,进行搜索,此时滑块还是在那一位置,而相关搜索关键字的数据较少,不在movable-area的可视范围,所有使用搜索的时候要设置滑块回到顶部;解决:在input触发change搜索关键字的时候,设置回到滑块回到顶部
- 设置回到顶部又会有问题,在设置过y回到顶部后再次设置无法回到顶部,这个uniapp官网也给出了解决方案;解决:uniapp.dcloud.net.cn/tutorial/vu…