uniapp 踩坑记录


记录自己用uniapp开发微信小程序、H5踩的各种坑

  1. uniapp vue 的 ref绑定不能用于内置组件 (view这些) ;
  2. uni-app修改data里的数组某个值 要用 this.$set(this.arr, index, value)
  3. uniapp 只能获取DOM,不能操作DOM元素;
  4. uniapp 编译为微信小程序时边框样式显示不全,上边框消失(ios)问题解决方案:transform: rotateZ(360deg) 或 使用before、after伪元素模拟;
  5. 在scroll-view标签内使用uni-popup组件,在微信小程序真机环境下会被scroll-view的兄弟元素遮挡,此时给uni-popup组件外套一个root-portal组件即可;
<root-portal>
 		<uni-popup ref="uniPopupRef" type="center">
		</uni-popup> 
</root-portal>
  1. uniapp的switch组件阻止默认切换事件,即在切换之前进行逻辑判断,不用@change事件,改为click事件,并将switch禁用(disabled)
<switch :checked="item.status" disabled @click="change"/>
  1. 开发H5时,对于一个列表多选框全选和取消全选业务
   	<checkbox :checked="selectTag" @click="checkAllTagBtn"><text>全选</text></checkbox>
   	<checkbox-group @change="changeTag">
   		<checkbox v-for="item, index in tag" :key="index" :value="item" :checked="checkedTagStatus[index]" @click="checkTagBtn(index)"><text>{{item}}</text>        
           </checkbox>
   	</checkbox-group>
		data() {
			return {
                tag: [],
				checkedTagStatus: [],
				selectName: false,
			}
		},
        watch: {
			checkedTagStatus(n) {
				let flag = true;
				if(n.length) {
					for (let i = 0; i < n.length; i++) {
						if(!n[i]) {
							flag = false;
							break;
						}
					}
					this.selectTag = flag
				} else {
					this.selectTag = false
				}
			}
		},
        methods: {
            checkAllTagBtn() {
				if(this.selectTag) {
					this.checkedTagStatus.forEach((i,index) => {
						if(i) {
							this.$set(this.checkedTagStatus, index, true)
							setTimeout(() => {
								this.$set(this.checkedTagStatus, index, false)
							})
						}
					})
				} else {
					this.checkedTagStatus.forEach((i,index) => {
						this.$set(this.checkedTagStatus, index, true)
					})
				}
			},
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值