問題在于this的指向,
解決辦法是使用變量保存$on,其次再為data中的值賦值
以下是具體代碼:
1、html代碼:
<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代碼:
①傳遞對象:
A頁面傳遞:(使用.$emit)submitFun() {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.positionOnethis.positionTwo = on.positionTwoconsole.log('打印111', this.positionOne) //銷售 console.log('打印222', this.positionTwo) //廣告銷售},
②傳遞數組:
A頁面傳遞:(使用.$emit)submitFun() {uni.$emit('selectList', this.selectList) //傳遞選中的數組uni.navigateBack()},B頁面接收:(使用.$on)onShow() {//接收上個頁面傳遞的職位類別const on = uni.$on('selectList', function(data) {// console.log('打印收到的類型',typeof(data)) //objectthis.positionTwo = data.toString() //轉為字符串使用})this.positionTwo = on.positionTwoconsole.log('打印positionTwo', this.positionTwo) //銷售, 廣告銷售},