智能照明系统APP-本地串口
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.
 
 
 
 
 
 
LightingSystemApp-serial/.svn/pristine/95/95a466826f2b16ee1dfcc42a8de...

70 lines
2.2 KiB

import initRouterGuard from './router-guard'
let appVm = false
export function getApp () {
return appVm
}
export function getCurrentPages (isAll = false, ignoreError = false) {
const pages = []
const app = getApp()
if (!app) {
if (ignoreError) {
console.error('app is not ready')
}
return []
}
let childrenVm = app.$children[0]
if (childrenVm && childrenVm.$children.length) {
const tabBarVm = childrenVm.$children.find(vm => vm.$options.name === 'TabBar')
const layoutVm = childrenVm.$children.find(vm => vm.$options.name === 'Layout')
if (layoutVm) {
childrenVm = layoutVm
}
childrenVm.$children.forEach(vm => {
if (tabBarVm !== vm && vm.$children.length && vm.$children[0].$options.name === 'Page' && vm.$children[0].$slots.page) {
// vm.$children[0]=Page->PageBody->RealPage
const pageVm = vm.$children[0].$children.find(vm => vm.$options.name === 'PageBody').$children.find(vm => !!vm.$page)
if (pageVm) {
let isActive = true
if (!isAll && tabBarVm && pageVm.$page && pageVm.$page.meta.isTabBar) { // 选项卡仅列出活动的
if (app.$route.meta && app.$route.meta.isTabBar) { // 当前页面路由是 tabBar
if (app.$route.path !== pageVm.$page.path) {
isActive = false
}
} else {
if (tabBarVm.__path__ !== pageVm.$page.path) {
isActive = false
}
}
}
if (isActive) {
pages.push(pageVm)
}
} else {
// TODO
// console.error('pageVm is undefined')
}
}
})
}
// 当页面返回过程中,请求 getCurrentPages 时,可能会获取到前一个已经准备销毁的 page
const length = pages.length
if (length > 1) {
const currentPage = pages[length - 1]
if (currentPage.$page.path !== app.$route.path) { // 删除已经准备销毁的上个页面
pages.splice(length - 1, 1)
}
}
return pages
}
export default function createApp (vm, routes) {
appVm = vm
appVm.globalData = appVm.$options.globalData || {}
// initEvents(appVm)
initRouterGuard(appVm, routes)
}