uniapp 使用 $emit和$on——$on中无法为data中的变量赋值

问题在于this的指向,

解决办法是使用变量保存$on,其次再为data中的值赋值

以下是具体代码:

1、html代码:

c 复制代码
			<view class="form_picker" @click="selePositionFun()">
				<view class="">
					<input placeholder="请选择职位类别" :disabled="true" v-if="positionOne == ''" />
					<view class="" v-else>{{positionOne}}-{{positionTwo}}</view>
				</view>
			</view>

2、 js代码:

①传递对象:
c 复制代码
A页面传递:(使用.$emit)
	let newarr = {
		one:this.leftList[this.tabindex].type,   //一级名称
		two:this.selectList[0]                   //二级名称
	}
	uni.$emit('positionOne',newarr)
	uni.navigateBack()

B页面接收:(使用.$on)
	onShow() {
		//接收上个页面传递的职位类别
		const on = uni.$on('positionOne', function (data) {
		 console.log('打印data', Object.values(data))    // ["销售", "广告销售"]
			var list = Object.values(data)   //使用Object.values 将对象转换为数组
			this.positionOne = list[0]
			this.positionTwo = list[1]
		})
		//再次赋值
		this.positionOne = on.positionOne
		this.positionTwo = on.positionTwo
			
		console.log('打印111', this.positionOne)   //销售 
		console.log('打印222', this.positionTwo)   //广告销售
	},
②传递数组:
c 复制代码
A页面传递:(使用.$emit)
	uni.$emit('selectList', this.selectList)   //传递选中的数组
	uni.navigateBack()

B页面接收:(使用.$on)
	onShow() {
		//接收上个页面传递的职位类别
		const on = uni.$on('selectList', function(data) {
			// console.log('打印收到的类型',typeof(data))  //object
			this.positionTwo = data.toString() //转为字符串使用
		})
		this.positionTwo = on.positionTwo
		console.log('打印positionTwo', this.positionTwo)   //销售, 广告销售
	},

完成~

相关推荐
Sun_light11 分钟前
6个你必须掌握的「React Hooks」实用技巧✨
前端·javascript·react.js
爱学习的茄子14 分钟前
深度解析JavaScript中的call方法实现:从原理到手写实现的完整指南
前端·javascript·面试
百锦再15 分钟前
重新学习Vue中的按键监听和鼠标监听
javascript·vue.js·vue·计算机外设·click·up·down
优雅永不过时_v23 分钟前
基于vite适用于 vue和 react 的Three.js低代码与Ai结合编辑器
前端·javascript
Thomas_YXQ25 分钟前
Unity URP法线贴图实现教程
开发语言·unity·性能优化·游戏引擎·unity3d·贴图·单一职责原则
WildBlue27 分钟前
🧊 HTML5 王者对象 Blob - 二进制世界的魔法沙漏
前端·javascript·html
啷咯哩咯啷31 分钟前
Vue3构建低代码表单设计器
前端·javascript·vue.js
凌览34 分钟前
斩获 27k Star,一款开源的网站统计工具
前端·javascript·后端
Zz_waiting.36 分钟前
Javaweb - 10.4 ServletConfig 和 ServletContext
java·开发语言·前端·servlet·servletconfig·servletcontext·域对象
爱学习的小学渣37 分钟前
JS用法:Map,Set和异步函数
前端·javascript