update
uni-simple-router 3.0 版本已发布,欢迎你的使用!

# 退出应用

注意

routerErrorEach 请保证有错误信息打印,否则再出错误的情况下很难排除。

v2.0.0起完全支持APP端拦截。包括安卓端在首页按多次返回。目前可能需要开发者自行处理,直接贴出代码:




 





 
 
 
 
 
 





import {
	RouterMount,
	createRouter,
    runtimeQuit
} from './dist/uni-simple-router.js';

const router = createRouter({
	platform: process.env.VUE_APP_PLATFORM,  
	routerErrorEach:({type,level,...args})=>{
		console.log({type,level,...args})
		// #ifdef APP-PLUS
			if(type===3){
				router.$lockStatus=false;
				runtimeQuit();
			}
		// #endif
	},
	routes: [...ROUTES]
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

前往查看 routerErrorEach 参数说明。当然你也可以自定义退出app提示!只需要把 runtimeQuit 函数去除并换成自己的ui即可。

# 简易自定义






 
 
 
 
 
 
 
 
 
 
 
 





const router = createRouter({
	platform: process.env.VUE_APP_PLATFORM,  
	routerErrorEach:({type,level,...args})=>{
		console.log({type,level,...args})
		// #ifdef APP-PLUS
			if(type===3){
				router.$lockStatus=false;
				uni.showModal({
                    title: '提示',
                    content: '您确定要退出应用吗?',
                    success: function (res) {
                        if (res.confirm) {
                            plus.runtime.quit();
                        } 
                    }
                });
			}
		// #endif
	},
	routes: [...ROUTES]
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 更精准的定位






 
 
 
 
 
 
 
 
 
 





const router = createRouter({
	platform: process.env.VUE_APP_PLATFORM,  
	routerErrorEach:({type,level,...args})=>{
		console.log({type,level,...args})
		// #ifdef APP-PLUS
        if(type===3){
			router.$lockStatus=false;
            const pages=getCurrentPages();
            const currentPage=pages[pages.length-1];
			if(level==1&&args.uniActualData.from==='backbutton'){
                if(currentPage.$page.meta.isQuit){
                    runtimeQuit();
                }
			}
		}
		// #endif
	},
	routes: [...ROUTES]
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 调用页面方法




 
 
 
 
 
 
 
 
 
 
 




<script>
	export default {
		methods: {
            runtimeQuit(){
                uni.showModal({
                    title: '提示',
                    content: '您确定要退出应用吗?',
                    success: function (res) {
                        if (res.confirm) {
                            plus.runtime.quit();
                        } 
                    }
                });
            },
		}
	}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17






 
 
 
 
 
 





// router.js
const router = createRouter({
	platform: process.env.VUE_APP_PLATFORM,  
	routerErrorEach:({type,level,...args})=>{
		console.log({type,level,...args})
		// #ifdef APP-PLUS
        if(type===3){
			router.$lockStatus=false;
            const pages=getCurrentPages();
            const {$vm}=pages[pages.length-1];
			$vm.runtimeQuit();
		}
		// #endif
	},
	routes: [...ROUTES]
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

这里有很多的方式让你选择。如果你想让退出UI更漂亮或者有更多业务逻辑处理,选择调用页面方法方式处理是你不二的选择。