Beim Versuch Vue.js mit vue-Ressource und vue-Router ein Fehler angezeigt wird, zu verwenden:Vue.js + vue-resource + vue-router = Lexikalischer Deklarationsfehler?
ReferenceError: can't access lexical declaration `vm' before initialization
Was ein ich den Fehler aufgespürt es erscheint nur, wenn die Seite mit einer anfänglichen Route geladen wird, z.B test.com/#/files (error) und test.com/ (kein Fehler). Wenn der gesamte Code requestDirectory()
durch next()
ersetzt wird, wird der Fehler nicht angezeigt. Es scheint also die Code-Struktur zu erben. Irgendwelche Ideen?
const routerComponents = {
home: { template: '<p>Home ...</p>' },
files: { template: '<p>Files</p>' }
};
function requestDirectory(to, from, next) {
console.log("Loading files in ...");
vm.$http.post('/api/dir', {dir: 'photos'}).then((res) => {
console.log("done");
next()
}, (err) => {});
}
const router = new VueRouter({
routes: [
{ path: '/', component: routerComponents.home },
{ path: '/files', component: routerComponents.files, beforeEnter: requestDirectory }
]
});
const vm = new Vue({
data: {
title: 'Home'
},
router: router
});
window.onload = function() {
vm.$mount('#app');
};
Ich lese das, aber das würde bedeuten, eine nicht vue-Router und vue-Ressource verwenden kann ?? – Bernd
gibt es verschiedene Arten von Komponenten - Router-Komponenten dreht sich alles um Routing, wie ich es richtig verstehe. Wie auch immer, würdest du versuchen, global über 'Vue.http' statt' vm. $ Http' darauf zuzugreifen? –
'Vue.http' funktioniert, aber es führt zu einem neuen Fehler" next undefined ".Alle insgesamt habe ich die HTTP-Anfrage in den Komponenten' created' Callback platziert und es funktioniert. – Bernd