vue.js - 带有 this.$route.params.slug 的 API 响应
问题描述
我正在使用 vue-router 从列出资源记录的“索引”页面链接,并且我有一个路由器链接可以将您带到单个记录的页面。该路线工作正常,但我无法仅针对该记录提取 API 响应。
在控制台中我得到一个 404:
GET http://localhost:8080/this .$route.params.slug 404(未找到)
从 Devtools,我的数组是空的
$route 错误:数组 [1] 0:错误杜松子酒:数组 [0]
路由器.index.js
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Gins from '@/components/Gins'
import GinsShow from '@/components/GinsShow'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
},
{
path: '/gins',
name: 'Gins',
component: Gins
},
{
path: '/gins/:slug',
name: 'Gin-Show',
component: GinsShow
}
]
})
组件/GinsShow.vue
<template>
<div id="Gin-Show">
<div class="container mx-auto pt-16 p-8">
<h1 class="font-black tracking-wide uppercase mb-8">{{gin.name}}</h1>
<div class="flex flex-wrap">
</div>
</div>
</div>
</template>
<script>
import axios from 'axios'
export default {
name: 'Gin-Show',
data() {
return {
gin: [],
errors: []
}
},
created() {
axios.get('this.$route.params.slug')
.then(response => {
this.gin = response.data
})
.catch(e => {
this.errors.push(e)
})
}
}
</script>
<style>
</style>
解决方案
你有一个不应该出现的字符串:
axios.get('this.$route.params.slug')
应该
axios.get(this.$route.params.slug)
您可能需要使用 slug 参数构造 URL,所以我希望它是这样的:
axios.get('/resource/' + this.$route.params.slug)
但这取决于您的 API 服务器。
推荐阅读
- c# - 批处理作业和电子邮件调度程序的基础知识
- html - @font-face 什么时候加载字体?
- python - 如何选择一个下拉菜单值与硒使用 python
- tcl - 从文件中逐行读取 *TCL
- rasa-nlu - 创建评估 RASA 聊天机器人问题
- javascript - 将一个按钮与另一个居中的按钮内联
- python - 不明白如何解决错误信息
- gremlin - 配置 gremlin-server 以使用 UUID 作为 vrtices 和边缘的 id
- php - 适用于 Oracle DB 的 PHP OCI8 不适用于 Windows 上的 IIS (OCI_CRED_EXT)
- html - 如何根据 CSS 转换的百分比计算像素?