<template> <div> <van-nav-bar title="详情页" left-text="返回" left-arrow @click-left="back"></van-nav-bar> <van-card :title="cardTitle" :num="cardNum" :price="cardPrice"> <p>{{ cardDesc }}</p> </van-card> </div> </template> <script> export default { name: "CardDetail", data() { return { cardTitle: "", cardNum: "", cardPrice: "", cardDesc: "", }; }, methods: { back() { this.$router.go(-1); }, }, created() { // 获取路由参数中的id值 let id = this.$route.params.id; // 根据id值从服务器获取数据 let url = "http://jsonplaceholder.typicode.com/posts/${id}"; this.axios.get(url).then((res) => { this.cardTitle = res.data.id+'-'+res.data.title; this.cardNum = 2; this.cardPrice = 2.0; this.cardDesc = res.data.body; }); }, }; </script> <style> </style>改正错误
时间: 2024-02-01 15:14:45 浏览: 121
这段代码存在以下错误:
1. `<template>` 和 `</template>` 标签之间的代码没有包含在一个根元素中,应该用一个 `<div>` 标签将其包裹起来。
2. 在 Axios 的请求 URL 中使用的是单引号,应该使用反引号。
3. `this.axios` 应该改为 `this.$axios`。
4. 在 `created()` 钩子中,应该检查服务器请求是否成功,如果失败了需要进行错误处理。
以下是修改后的代码:
```
<template>
<div>
<van-nav-bar title="详情页" left-text="返回" left-arrow @click-left="back"></van-nav-bar>
<van-card :title="cardTitle" :num="cardNum" :price="cardPrice">
<p>{{ cardDesc }}</p>
</van-card>
</div>
</template>
<script>
export default {
name: "CardDetail",
data() {
return {
cardTitle: "",
cardNum: "",
cardPrice: "",
cardDesc: "",
};
},
methods: {
back() {
this.$router.go(-1);
},
},
created() {
let id = this.$route.params.id;
let url = `http://jsonplaceholder.typicode.com/posts/${id}`;
this.$axios
.get(url)
.then((res) => {
if (res.data) {
this.cardTitle = res.data.id + "-" + res.data.title;
this.cardNum = 2;
this.cardPrice = 2.0;
this.cardDesc = res.data.body;
} else {
console.error("请求数据失败");
}
})
.catch((error) => {
console.error("请求数据失败", error);
});
},
};
</script>
<style></style>
```
阅读全文