uni-app 拍照后回显

本文展示了如何在Vue项目中结合uni-app,利用plus.camera和uni.chooseImage API实现拍照或从相册选取图片,并进行压缩处理。通过FileReader读取图片为base64编码,最后将其赋值给img标签的src属性展示图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<template>
	<div><button type="primary" @click="camera">11111</button>
		<img :src="imgUrl1" alt="" width='100px'>
	</div>
</template>

<script>
	export default {
		data() {
			return {
				imgUrl1: ''
			}
		},
		methods: {
			camera() {
				let _this = this
				let cmr = plus.camera.getCamera();
				uni.chooseImage({
					count: 1, //默认9
					sizeType: ['original'], //可以指定是原图还是压缩图,默认二者都有
					sourceType: ['album', 'camera'], //从相册选择
					success: function(res) {
						let img = res.tempFilePaths[0]
						uni.compressImage({
							src: img, //图片路径
							quality: 30, //压缩率
							success: res => {
								plus.io.resolveLocalFileSystemURL(res.tempFilePath, function(
									entry2) {
									// 通过fileReader得到base64
									entry2.file(function(file) {
										let fileReader = new plus.io.FileReader();
										fileReader.readAsDataURL(file);
										fileReader.onloadend = function(evt) {
											let base64 = evt.target.result;
											//将base64传给image的src
											_this.imgUrl1 = base64;
										};
									});
								});
							}
						});
					}
				});
			}
		}
	}
</script>

<style>
</style>

直接  cv

### uni-data-picker 回显设置教程及常见问题解决方案 #### 一、v-model 的正确绑定方式 `uni-data-picker` 组件的 `v-model` 属性并不直接对应用户选择的地址名称字符串(如:湖北/襄阳/老河口),而是对应的值字段(value)。因此,在需要回显时,应该将 `v-model` 设置为目标地区的唯一标识符(通常是数据库中的 ID 或者其他唯一的数值型表示)[^1]。 例如,如果目标地区是“老河口”,其对应的 value 值为 `420682`,那么可以通过如下代码实现回显: ```vue <template> <view> <uni-data-picker v-model="selectedValue"></uni-data-picker> </view> </template> <script> export default { data() { return { selectedValue: '420682' // 这里填写具体的 value 值用于回显 }; } }; </script> ``` #### 二、通过 @change 获取完整的地址字符串 为了满足业务需求,除了回显功能外,通常还需要保存用户选择的具体地址字符串(如:湖北/襄阳/老河口)。这可以通过监听组件的 `@change` 事件完成。在该事件触发时,可以从返回的数据对象中提取所需的地址信息并存储到另一个变量中。 以下是具体实现方法: ```vue <template> <view> <uni-data-picker v-model="selectedValue" @change="handleAddressChange"></uni-data-picker> </view> </template> <script> export default { data() { return { selectedValue: '420682', // 需要回显的目标 value 值 fullAddressString: '' // 存储完整的地址字符串 }; }, methods: { handleAddressChange(e) { this.fullAddressString = e.detail.data.map(item => item.text).join('/'); // 提取完整地址字符串 } } }; </script> ``` #### 三、注意事项与常见问题分析 1. **未正确理解 v-model 的含义** 很多开发者误认为 `v-model` 应该绑定的是地址字符串而非实际的 value 值。这种误解会导致无法正常回显数据。 2. **动态加载数据源** 如果使用的 `localdata` 数据源是由接口异步请求获得,则需要注意只有当数据完全加载完成后才能尝试设置初始选中项。否则可能会因为数据尚未准备好而导致回显失败[^3]。 3. **样式自定义的需求** 当默认样式的展示效果不符合项目设计要求时,可通过插槽机制来自定义部分界面布局。比如调整选项列表的高度或者字体大小等细节。 4. **与其他表单控件配合使用** 在某些场景下可能还会涉及到多个输入框联动的情况,这时就需要特别注意不同状态之间的同步逻辑处理[^2]。 #### 四、总结 综上所述,解决 `uni-data-picker` 的回显问题是比较常见的开发任务之一。关键是清楚了解它的核心工作机制——即 `v-model` 实际代表的是内部节点的 key 而非直观可见的文字描述;同时借助于回调函数捕获更多有用的信息以便进一步加工利用。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值