vue.js - VueJS 单页模板不会呈现
问题描述
我开始学习 Vue。我在网上研究过,它看起来是最简单的开始。
目前我有两个组件:
- Galleria.vue ==> 我有一个从 data.json 获取的列表。
- Detail.vue ==> 哪个是渲染 data.json 中每个项目的假定模板
好吧,当我单击每个链接并转到 /detail/ID 时,比如说 /detail/1。它不会与 1 的信息一起呈现。
画廊
<template>
<div>
<ul>
<li v-for="data in data" :key="$route.params.id">
<router-link :to="{ path: '/detail/' + data.id }">
{{ data.id }} - {{ data.name }}
</router-link>
</li>
</ul>
</div>
</template>
<script>
import data from "../assets/data.json";
export default {
data() {
return {
data: data,
};
},
name: "galleria",
};
</script>
细节.vue
<template>
<div>
<h1>{{ data.name }}</h1>
<p>{{ data.description }}</p>
</div>
</template>
<script>
import data from "../assets/data.json";
export default {
data() {
return {
data: data,
};
},
name: "Detail",
};
</script>
**Router JS**
import Vue from "vue";
import VueRouter from "vue-router";
import Galleria from "./components/Galleria.vue";
import Detail from "./components/Detail.vue";
Vue.use(VueRouter);
const routes = [
{
path: "/",
name: "galleria",
component: Galleria
},
{
path: "/detail/:data.id",
name: "Detail",
component: Detail
}
];
const router = new VueRouter({
mode: "history",
routes
});
export default router;
您可以在此处查看在线代码。
解决方案
有3种方法可以解决这个问题:首先你可以使用这个路由器链接:
<router-link :to="{ path: 'detail', query: { id:data.id }}">{{ data.id }} - {{ data.name }}</router-link>
<!-- with query, resulting in `/detail?id=2` -->
第二种可以帮助您的方法是:
<router-link :to="'/detail' + data.id">{{ data.id }} - {{ data.name }}</router-link>
第三种方法是:
<router-link :to="{ name: 'detail', params: { id: data.id }}">{{ data.id }} - {{ data.name }}</router-link>
推荐阅读
- c++ - 试图修复一个无法让我开始编写其余部分的错误
- r - 字符向量的组合搜索
- r - 在 R 中,在 list() 中,名字自动被 ` 包围,为什么?
- sql - 我应该创建哪些列索引?
- c# - 为什么 System.Random.Sample 会抛出 IndexOutOfRangeException?
- python - 如何调用不接受参数但在另一个 python 文件中返回一些值的方法?
- ubuntu-16.04 - 启动 ubuntu 16 时运行命令
- python - 重复被添加到列表 Python
- php - BLS API PHP file_get_contents 无响应
- python-3.x - 在python while循环中计数没有正确递增