需求:首頁需要添加2個彈窗,效果如下:
方法1: 如果使用兩個彈窗,點擊任務出現的彈窗和點擊發現出現的彈窗會相互影響,有時會出現任務和發現圖標閃動問題、而且彈窗不顯示問題,需要點擊多次才會出現彈窗。
終極解決: 將兩個彈窗的數據進行封裝,點擊發現和任務分別賦予彈窗不同的數據。
代碼:
<uni-popup ref="popup" type="bottom" class="popup"> <view class="new_create"> <view class="task_item" v-for="(item,index) in list" :key="item.id" @click="goPage(item.url)"> <image :src="item.icon"></image> <text>{{item.title}}</text> </view> </view> </uni-popup>
<script> export default { data() { return { //任務彈窗數據 data1:[ {id:1,icon:"../../static/h1.png",url:"/pages/index/create",title:"新建任務"}, {id:2,icon:"../../static/h2.png",url:"/pages/index/historytask",title:"歷史任務"}, ], //載入地圖數據 data2:[ {id:1,icon:"../../static/map.png",url:"/pages/xinzeng/map",title:"載入地圖"}, {id:2,icon:"../../static/all.png",url:"/pages/xinzeng/global",title:"全局管理"}, {id:3,icon:"../../static/custom.png",title:"自定義"}, ], //彈窗數據 list:[], } }, methods: { //掃碼 scancodeHandle() { uni.scanCode({ success: (res) => { console.log('條碼類型:' + res.scanType); console.log('條碼內容:' + res.result); uni.navigateTo({ url: "/pages/xinzeng/coderobit" }) } }); }, goPage(url){ uni.navigateTo({ url:url }) } }, //tabbar監聽事件 onTabItemTap(e) { console.log(e); if (e.index == 0) { this.list = this.data1; this.$refs.popup.open('top') } if (e.index == 2) { this.list = this.data2; this.$refs.popup.open('top') } } } </script>