Files
vue-js-modal/demo/server_side_rendering/.nuxt/App.vue

63 lines
1.4 KiB
Vue

<template>
<div id="__nuxt">
<nuxt-loading ref="loading"></nuxt-loading>
<component v-if="layout" :is="layout"></component>
</div>
</template>
<script>
import NuxtLoading from './components/nuxt-loading.vue'
let layouts = {
"_default": () => import('/Users/yev/Projects/vue/vue-js-modal/demo/server/node_modules/nuxt/dist/app/layouts/default.vue' /* webpackChunkName: "layouts/default" */)
}
export default {
head: {"meta":[],"link":[],"style":[],"script":[]},
data: () => ({
layout: null,
layoutName: ''
}),
mounted () {
this.$loading = this.$refs.loading
this.$nuxt.$loading = this.$loading
},
methods: {
setLayout (layout) {
if (!layout || !layouts['_' + layout]) layout = 'default'
this.layoutName = layout
let _layout = '_' + layout
this.layout = layouts[_layout]
return this.layout
},
loadLayout (layout) {
if (!layout || !layouts['_' + layout]) layout = 'default'
let _layout = '_' + layout
if (typeof layouts[_layout] !== 'function') {
return Promise.resolve(layouts[_layout])
}
return layouts[_layout]()
.then((Component) => {
layouts[_layout] = Component
return layouts[_layout]
})
.catch((e) => {
if (this.$nuxt) {
return this.$nuxt.error({ statusCode: 500, message: e.message })
}
console.error(e)
})
}
},
components: {
NuxtLoading
}
}
</script>