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.
		
		
		
		
		
			
		
			
				
					
					
						
							61 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							61 lines
						
					
					
						
							2.1 KiB
						
					
					
				| import { uniAppHook } from './config';
 | |
| import H5init from '../vueRouter/init';
 | |
| import { appInit, removeBackPressEvent, pageIsHeadBack } from '../appRouter/init';
 | |
| import appletsInit from '../appletsRouter/init';
 | |
| import { appPlatform } from './util';
 | |
| import { proxyIndexHook } from '../appRouter/hooks';
 | |
| import { appletsProxyIndexHook } from '../appletsRouter/hooks';
 | |
| 
 | |
| /**
 | |
|  * 获取一些需要在各个平台混入的事件
 | |
|  * @param {Object} Router 当前原始路由对象
 | |
|  */
 | |
| const getMixins = function (Router) {
 | |
|     return {
 | |
|         H5: {
 | |
|             beforeCreate() {
 | |
|                 if (this.$options.router) {
 | |
|                     H5init(Router.$root, this.$options.router, this);
 | |
|                 }
 | |
|             },
 | |
|         },
 | |
|         APP: {
 | |
|             onLaunch() {
 | |
|                 uniAppHook.onLaunched = true;	// 标志已经触发了 onLaunch 事件
 | |
|                 appInit.call(this, Router.$root);
 | |
|             },
 | |
|             onLoad() {
 | |
|                 // 第一个页面 拦截所有生命周期
 | |
|                 if (uniAppHook.onLaunched && !uniAppHook.pageReady) {
 | |
|                     uniAppHook.onLaunched = false;
 | |
|                     proxyIndexHook.call(this, Router.$root);
 | |
|                 }
 | |
|                 removeBackPressEvent(this.$mp.page, this.$options); // 移除页面的onBackPress事件
 | |
|             },
 | |
|             onBackPress(...args) {
 | |
|                 return pageIsHeadBack.call(Router.$root, this.$mp.page, this.$options, args);
 | |
|             },
 | |
|         },
 | |
|         APPLETS: {
 | |
|             onLaunch() {
 | |
|                 uniAppHook.onLaunched = true;	// 标志已经触发了 onLaunch 事件
 | |
|                 appletsInit.call(this, Router.$root);
 | |
|             },
 | |
|             onLoad() {
 | |
|                 if (uniAppHook.onLaunched && !uniAppHook.pageReady) {	// 必须是第一个页面
 | |
|                     uniAppHook.onLaunched = false;
 | |
|                     appletsProxyIndexHook.call(this, Router.$root);
 | |
|                 }
 | |
|             },
 | |
|         },
 | |
|     };
 | |
| };
 | |
| 
 | |
| const initMixins = function (Vue, Router) {
 | |
|     Vue.mixin({
 | |
|         ...getMixins(Router)[appPlatform(true)],
 | |
|     });
 | |
| };
 | |
| 
 | |
| export default initMixins;
 |