【uniapp】uview1.x 的 u-upload 上传点击删除隐藏 modal 提示框

uview1.x 版本的 upload 默认在图片成功上传后,再点击右上角删除按钮时会弹出提示框,如图:
在这里插入图片描述
但是有时又不需要,想要直接提示删除成功即可,由于官网没有给出点击删除按钮时所调用的钩子函数,又无法操作 DOM,只有删除成功时的回调;
所以可以直接在项目中的 uview-ui 文件夹中找到 u-upload 组件来修改源码:
其中 deleteItem 函数时点击删除时调用的函数,里面的代码修改为:

if (this.beforeRemove && typeof (this.beforeRemove) === 'function') {
		// 此处钩子执行 原理同before-remove参数,见上方注释
		let beforeResponse = this.beforeRemove.bind(this.$u.$parent.call(this))(index,
			this.lists)
		// 判断是否返回了promise
		if (!!beforeResponse && typeof beforeResponse.then === 'function') {
			beforeResponse.then(res => {
				// promise返回成功,不进行动作,继续上传
				this.handlerDeleteItem(index)
			}).catch(err => {
				// 如果进入promise的reject,终止删除操作
				this.showToast('已终止移除')
			})
		} else if (beforeResponse === false) {
			// 返回false,终止删除
			this.showToast('已终止移除')
		} else {
			// 如果返回true,执行删除操作
			this.handlerDeleteItem(index)
		}
} 
else {
	// 如果不存在before-remove钩子,
	this.handlerDeleteItem(index)
}

即可,这样删掉 uni.showModal 就不会再弹弹窗了,只会进行删除成功的消息提示框。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
uView2.x版本中,Picker组件的使用方式与1.x版本略有不同。下面是一个五级选择器的示例代码: ```html <template> <view class="picker"> <picker :columns="columns" @change="onChange"></picker> </view> </template> <script> export default { data() { return { columns: [ { values: ['省份1', '省份2', '省份3'], defaultIndex: 0, onChange: (value, index) => { // 省份变化时更新城市列表 const cityValues = this.getCityList(index) this.$set(this.columns, 1, { values: cityValues, defaultIndex: 0 }) // 重置下级选项 this.$set(this.columns, 2, { values: [], defaultIndex: 0 }) this.$set(this.columns, 3, { values: [], defaultIndex: 0 }) this.$set(this.columns, 4, { values: [], defaultIndex: 0 }) } }, { values: [], defaultIndex: 0, onChange: (value, index) => { // 城市变化时更新区县列表 const districtValues = this.getDistrictList(index) this.$set(this.columns, 2, { values: districtValues, defaultIndex: 0 }) // 重置下级选项 this.$set(this.columns, 3, { values: [], defaultIndex: 0 }) this.$set(this.columns, 4, { values: [], defaultIndex: 0 }) } }, { values: [], defaultIndex: 0, onChange: (value, index) => { // 区县变化时更新街道列表 const streetValues = this.getStreetList(index) this.$set(this.columns, 3, { values: streetValues, defaultIndex: 0 }) // 重置下级选项 this.$set(this.columns, 4, { values: [], defaultIndex: 0 }) } }, { values: [], defaultIndex: 0, onChange: (value, index) => { // 街道变化时更新村庄列表 const villageValues = this.getVillageList(index) this.$set(this.columns, 4, { values: villageValues, defaultIndex: 0 }) } }, { values: [], defaultIndex: 0 } ] } }, methods: { onChange(e) { // 用户选择最后一个选项时输出最终结果 if (e.detail.column === 4) { const province = this.columns[0].values[e.detail.value[0]] const city = this.columns[1].values[e.detail.value[1]] const district = this.columns[2].values[e.detail.value[2]] const street = this.columns[3].values[e.detail.value[3]] const village = this.columns[4].values[e.detail.value[4]] console.log(`${province}-${city}-${district}-${street}-${village}`) } }, getCityList(provinceIndex) { // 根据省份获取城市列表 // TODO: 根据实际需求替换为异步请求或本地数据 return ['城市1', '城市2', '城市3'] }, getDistrictList(cityIndex) { // 根据城市获取区县列表 // TODO: 根据实际需求替换为异步请求或本地数据 return ['区县1', '区县2', '区县3'] }, getStreetList(districtIndex) { // 根据区县获取街道列表 // TODO: 根据实际需求替换为异步请求或本地数据 return ['街道1', '街道2', '街道3'] }, getVillageList(streetIndex) { // 根据街道获取村庄列表 // TODO: 根据实际需求替换为异步请求或本地数据 return ['村庄1', '村庄2', '村庄3'] } }, mounted() { // 初始化省份列表 const provinceValues = this.columns[0].values this.columns[1].values = this.getCityList(0) // 初始化城市列表 const cityValues = this.columns[1].values this.columns[2].values = this.getDistrictList(0) // 初始化区县列表 const districtValues = this.columns[2].values this.columns[3].values = this.getStreetList(0) // 初始化街道列表 const streetValues = this.columns[3].values this.columns[4].values = this.getVillageList(0) } } </script> <style> .picker { display: flex; flex-direction: row; justify-content: space-between; align-items: center; } </style> ``` 在上面的代码中,我们使用了一个Picker组件,并在其内部嵌套了多个列,对应省份、城市、区县、街道、村庄五个级别。每当用户选择某个级别的选项时,我们会根据该级别的值更新下一个级别的选项列表。当用户选择最后一个级别时,我们会输出最终的选择结果。 注意,由于uView2.x版本的Picker组件使用的是小程序原生的picker-view组件,因此在更新列的值时需要使用`$set`方法。另外,由于Picker组件的默认值是根据各列的`defaultIndex`属性来确定的,因此在更新列的值时也需要更新默认值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花间半盘棋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值