При попытке использовать Vue.js с vue-resource и vue-router отображается ошибка:
ReferenceError: невозможно получить доступ к лексическому объявлению `vm' перед инициализацией
Насколько я отследил ошибку, она появляется только тогда, когда страница загружается с начальным маршрутом, например. test.com/#/files (ошибка) и test.com/ (нет ошибки). Если весь код requestDirectory()
заменить на next()
, ошибка отображаться не будет. Таким образом, кажется, что он наследует структуру кода. Любые идеи?
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');
};