mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-23 22:25:12 +00:00
Merge pull request #1310 from whtsky/resolve-vuecomponent
add `resolvedLayouts` to support class components in layouts
This commit is contained in:
commit
233ea26455
@ -20,6 +20,8 @@ layoutsKeys.forEach(function (key, i) { %>
|
||||
<% }) %>
|
||||
}
|
||||
|
||||
let resolvedLayouts = {}
|
||||
|
||||
export default {
|
||||
head: <%= JSON.stringify(head) %>,
|
||||
data: () => ({
|
||||
@ -37,22 +39,23 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
setLayout (layout) {
|
||||
if (!layout || !layouts['_' + layout]) layout = 'default'
|
||||
if (!layout || !resolvedLayouts['_' + layout]) layout = 'default'
|
||||
this.layoutName = layout
|
||||
let _layout = '_' + layout
|
||||
this.layout = layouts[_layout]
|
||||
this.layout = resolvedLayouts[_layout]
|
||||
return this.layout
|
||||
},
|
||||
loadLayout (layout) {
|
||||
if (!layout || !layouts['_' + layout]) layout = 'default'
|
||||
if (!layout || !(layouts['_' + layout] || resolvedLayouts['_' + layout])) layout = 'default'
|
||||
let _layout = '_' + layout
|
||||
if (typeof layouts[_layout] !== 'function') {
|
||||
return Promise.resolve(layouts[_layout])
|
||||
if (resolvedLayouts[_layout]) {
|
||||
return Promise.resolve(resolvedLayouts[_layout])
|
||||
}
|
||||
return layouts[_layout]()
|
||||
.then((Component) => {
|
||||
layouts[_layout] = Component
|
||||
return layouts[_layout]
|
||||
resolvedLayouts[_layout] = Component
|
||||
delete layouts[_layout]
|
||||
return resolvedLayouts[_layout]
|
||||
})
|
||||
.catch((e) => {
|
||||
if (this.$nuxt) {
|
||||
|
Loading…
Reference in New Issue
Block a user