У меня есть следующая настройка моего проекта Vue ...
import UploadComponent from './Upload.vue'
import MainPageComponent from './MainPage.vue'
...
const router = new VueRouter({
routes: [
{ path: '/', component: MainPageComponent },
{ path: '/upload', component: UploadComponent }
]
});
...
let App = { router };
new Vue(App).$mount('#km-viewport');
Тогда в моем html у меня есть ...
<div id = "km-viewport">
<jg-app> </jg-app>
</div>
а внутри jg-app у меня есть следующий шаблон ...
<md-app-content>
<router-view></router-view>
</md-app-content>
Затем, чтобы заставить эту работу работать с Spring Boot, я добавляю следующее ...
@Controller
public class MainEndpoint {
@GetMapping("")
public String rootRedirect(){return "redirect:/ui";}
@RequestMapping("/ui")
public String root(){
return "splash";
}
@RequestMapping("/ui/upload")
public String upload() { return "forward:/ui"; }
}
Проблема в том, дошел ли я до <address>/ui или <address>/ui/upload, они оба показывают один и тот же компонент MainPageComponent. Я не могу понять, как заставить загрузку показать компонент загрузки.
Как использовать URL-адреса HTML5 с VueJS и Spring Boot?




Возможно, разница в том, как Vue обрабатывает URL-адреса.
Попробуйте активировать режим истории для vue-router:
const router = new VueRouter({
mode: 'history', // <=================== added this line
routes: [
{ path: '/', component: MainPageComponent },
{ path: '/upload', component: UploadComponent }
]
});
Конечно, это действительно частый источник проблем. Думаю, в следующих версиях они могут изменить значение по умолчанию.
Кстати, JSYK, я думаю, у тебя достаточно репутации, чтобы делать апвоуты, поздравляю :)
Я собирался ответить на то же самое. Я думал, что по умолчанию будет html5, как ng2, но потом я перечитал документацию.