赞
踩
如果只是监听返回按钮,可以通过onBackPress实现,但是很多时候为了开发起来维护方便,一般都是写一个导航栏组件统一管理,于是我这边简单封装了下导航栏组件。
核心代码如下:
customBack (callback) { if (this.customUrl) { uni[this.pageType]({url:this.customUrl }) return } const pages = getCurrentPages() if (callback) { callback() }else { if(pages.length === 1) { history.back() } else { uni.navigateBack() } } }
使用起来也方便
<navbar title="标题"/>
<navbar title="标题" custom-url="/pages/meu/index" page-type="switchTab"/>
<navbar title="标题">
<view class="navbar-right" @click="saveEvent">自定义右侧按钮</view>
</navbar>
完整代码如下
<template> <u-navbar :title="title" :is-back='isBack' :class="isOverlay ? 'overlay' : ''" :custom-back='customBack'> <template slot="right"> <slot></slot> </template> </u-navbar> </template> <script> export default { props: { title: { type: String, default: '' }, isBack: { // 是否显示返回按钮 type: Boolean, default: true }, isOverlay: { // 是否遮罩页面上(不占位) type: Boolean, default: false }, customUrl: { // 自定义跳转地址 type: String, default: '' }, pageType: { // 跳转方式 type: String, default: 'navigateTo' } }, methods: { customBack (callback) { if (this.customUrl) { uni[this.pageType]({url:this.customUrl }) return } const pages = getCurrentPages() if (callback) { callback() }else { if(pages.length === 1) { history.back() } else { uni.navigateBack() } } } } } </script> <style lang="scss" scoped> .overlay{ ::v-deep { .u-navbar-fixed{ background: transparent !important; } .u-navbar-placeholder{ display: none; } } } </style>
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。