uni-app中实现动态导航栏

本文介绍了在uni-app中如何实现动态导航栏,通过路由携带标题参数配合uni.setNavigationBarTitle方法。同时讨论了在同一页面内,根据导航栏内容控制小键盘显示与隐藏的技巧,强调了参数类型转换的重要性。

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

1.动态导航栏 参数为字符串

原理:同一页面的两处跳到同一页面,通过路由携带导航标题参数和uni-app中自定义导航栏API–uni.setNavigationBarTitle实现
index.vue
<template>
	<view @click="toSearch('搜索')"></view>
	<view @click="toSearch('全部')"></view>
</template>

<script>
	export default {
		...
		methods: {
			toSearch (title) {
				this.$router.navigateTo({
					url: `/pages/search/search?title=${title}`
				});
			}

		}
	}
search.vue
<script>
	<template>
		<input :focus=" title == '搜索' ? true :false "/>
	</template>

	export default {
		data () {
			title:''
		}
		methods: {
			onLoad (option) {
				console.log(option)//{title:'搜索'}
				if (option && option.title) {
				this.tilte = option.title
				//自定义导航栏API
                uni.setNavigationBarTitle({
                    title: option.title
                });
            }
			}

		}
	}

</script>

2.同一页面,根据不同导航栏内容,小键盘的显示与隐藏

注意点:将字符串参数变成数字类型参数,防止乱码出现
index.vue
<template>
	<view @click="toSearch('1')"></view>
	<view @click="toSearch('2')"></view>
</template>

<script>
	export default {
		...
		methods: {
			toSearch (type) {
				this.$router.navigateTo({
					url: `/pages/search/search?type=${type}`
				});
			}

		}
	}
search.vue
<template>
	<input focus=' type == 1 '/>
</template>

<script>
	export default {
		data () {
			type: '',
			titleMap: {
				1: '搜索',
				2: '全部酒店'
			}
		}
		methods: {
			onLoad (option) {
				if (option && option.type) {
				this.type = option.type;
				//自定义导航栏API
                uni.setNavigationBarTitle({
                	// || 是为了容错
                    title: this.titleMap[this.type] || '搜索';
                });
            }
			}

		}
	}

</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值