VueJS Router-link 没有 linking 到视图
VueJS Router-link not linking to the view
我的路由器有问题 link。当我把它放在一个视图中时,它工作得很好,我有一个可点击的 link。但是,当我将路由器 link 放入组件中并内置到视图中时,路由器 link 不再起作用:我希望 "just" 到 link 的详细信息一个项目。
这项工作(resources/js/views/HomepageView.vue
)
<router-link :to="{ name: 'projects.show', params: { slug: slideshowProject.slug }}">
<a href="#" class="btn-secondary">See
Campaign</a>
</router-link>
这行不通 (resources/js/components/UserProject.vue
)
<router-link :to="{ name: 'projects.show', params: { slug: project.slug }}">
<h4>{{ project.title}}</h4>
</router-link>
页面的脚本部分:
<script>
export default {
name: "user-projects",
data() {
return {
projects: null
}
},
mounted() {
this.getUserProject()
},
methods: {
getUserProject() {
this.$store.dispatch('getUserProjects', {
limit: 2
}).then(response => {
this.projects = response.data.data;
})
}
},
}
</script>
我的router.js
import Homepage from '../views/frontend/HomepageView';
import ProjectDetails from '../views/frontend/ProjectDetailsView';
import LoginView from '../views/frontend/LoginView';
import RegisterView from '../views/frontend/RegisterView';
import DashboardIndexView from '../views/dashboard/DashboardIndexView';
export const routes = [
{
path: '',
name: 'homepage',
component: Homepage
},
{
path: '/login',
name: 'frontend-login',
component: LoginView
},
{
path: '/projects/:slug',
name: 'projects.show',
component: ProjectDetails
},
{
path: '/register',
name: 'frontend-register',
component: RegisterView
},
{
path: '/dashboard',
name: 'dashboard-index',
component: DashboardIndexView
}
];
我不明白我的错误在哪里:/
感谢 Jom,问题是我的 "slug" 是空的,事实上,当我查看控制台时,警告就在那里。
[vue-router] missing param for named route "projects.show": Expected "slug" to be defined
您可以在渲染路由器之前检查 slug 是否为空 link,如下例所示:
<router-link v-if="project.slug" to="{ name: 'projects.show', params: { slug: project.slug }}">
<h4>{{ project.title}}</h4>
</router-link>
但我确定,为什么 slug 是空的。
我的路由器有问题 link。当我把它放在一个视图中时,它工作得很好,我有一个可点击的 link。但是,当我将路由器 link 放入组件中并内置到视图中时,路由器 link 不再起作用:我希望 "just" 到 link 的详细信息一个项目。
这项工作(resources/js/views/HomepageView.vue
)
<router-link :to="{ name: 'projects.show', params: { slug: slideshowProject.slug }}">
<a href="#" class="btn-secondary">See
Campaign</a>
</router-link>
这行不通 (resources/js/components/UserProject.vue
)
<router-link :to="{ name: 'projects.show', params: { slug: project.slug }}">
<h4>{{ project.title}}</h4>
</router-link>
页面的脚本部分:
<script>
export default {
name: "user-projects",
data() {
return {
projects: null
}
},
mounted() {
this.getUserProject()
},
methods: {
getUserProject() {
this.$store.dispatch('getUserProjects', {
limit: 2
}).then(response => {
this.projects = response.data.data;
})
}
},
}
</script>
我的router.js
import Homepage from '../views/frontend/HomepageView';
import ProjectDetails from '../views/frontend/ProjectDetailsView';
import LoginView from '../views/frontend/LoginView';
import RegisterView from '../views/frontend/RegisterView';
import DashboardIndexView from '../views/dashboard/DashboardIndexView';
export const routes = [
{
path: '',
name: 'homepage',
component: Homepage
},
{
path: '/login',
name: 'frontend-login',
component: LoginView
},
{
path: '/projects/:slug',
name: 'projects.show',
component: ProjectDetails
},
{
path: '/register',
name: 'frontend-register',
component: RegisterView
},
{
path: '/dashboard',
name: 'dashboard-index',
component: DashboardIndexView
}
];
我不明白我的错误在哪里:/
感谢 Jom,问题是我的 "slug" 是空的,事实上,当我查看控制台时,警告就在那里。
[vue-router] missing param for named route "projects.show": Expected "slug" to be defined
您可以在渲染路由器之前检查 slug 是否为空 link,如下例所示:
<router-link v-if="project.slug" to="{ name: 'projects.show', params: { slug: project.slug }}">
<h4>{{ project.title}}</h4>
</router-link>
但我确定,为什么 slug 是空的。