You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							67 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							67 lines
						
					
					
						
							1.5 KiB
						
					
					
				
								<template>
							 | 
						|
									<view>
							 | 
						|
										<lf-tabbar-box :value="currentTabBar" 
							 | 
						|
										  v-if="isShowTabBar" 
							 | 
						|
										  :close-animate-on-raisede="false">
							 | 
						|
										  <lf-tabbar-item v-for="item in tabbars"
							 | 
						|
											  :key="item.name"
							 | 
						|
											  :name="item.name"
							 | 
						|
											  :icon="item.icon"
							 | 
						|
											  :dot="item.dot"
							 | 
						|
											  :info="item.info"
							 | 
						|
											  :path="item.path"
							 | 
						|
											  :raisede="item.raisede"
							 | 
						|
											  :style="{'width': 100 / tabbars.length +'%'}"
							 | 
						|
											  @click="handleClick"
							 | 
						|
											  icon-prefix="icon">
							 | 
						|
											  {{ item.text }}
							 | 
						|
											</lf-tabbar-item>
							 | 
						|
										</lf-tabbar-box>
							 | 
						|
									</view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
									import lfTabbarBox from "./lf-tabbar-box.vue"
							 | 
						|
									import lfTabbarItem from "./lf-tabbar-item.vue"
							 | 
						|
									import { mapGetters } from "vuex";
							 | 
						|
									
							 | 
						|
									export default {
							 | 
						|
										name: 'lf-tabbar',
							 | 
						|
										components: {
							 | 
						|
											lfTabbarBox,
							 | 
						|
											lfTabbarItem
							 | 
						|
										},
							 | 
						|
										props: {
							 | 
						|
											type: {
							 | 
						|
												type: String, // 默认跳转方式redirect,可选switch
							 | 
						|
												default: 'redirect'
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										computed: {
							 | 
						|
											...mapGetters(['currentTabBar', 'tabbars', 'isShowTabBar'])
							 | 
						|
										},
							 | 
						|
										created(){
							 | 
						|
											// 组件被创建时检查当前在哪个页面,然后校验currentTabBar是否与之匹配
							 | 
						|
											let pages = getCurrentPages();
							 | 
						|
											let page = pages[pages.length - 1].route;
							 | 
						|
											let tabbar_name = '';
							 | 
						|
											this.tabbars.map(item => {
							 | 
						|
												if(item.path == '/'+ page){
							 | 
						|
													tabbar_name = item.name;
							 | 
						|
												}
							 | 
						|
											})
							 | 
						|
											if(tabbar_name != this.currentTabBar){
							 | 
						|
												this.$store.commit('setCurrentTabBar', tabbar_name);
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										methods: {
							 | 
						|
											handleClick (options) {
							 | 
						|
											  this.$store.commit('setCurrentTabBar', options.name);
							 | 
						|
											  this.$url(options.path, {type: this.type});
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style>
							 | 
						|
								</style>
							 |