【发布时间】:2018-11-23 15:13:15
【问题描述】:
我有一个使用动态路由的页面。
我有一个列出所有工作的“工作”页面。您单击一项工作,它会为您提供该工作的详细信息。
Jobs HTML 页面使用以下内容(sn-ps 不包括 ul/li 标签):
<vue-panel v-for="job in jobs" v-if="filterJob(job)" v-bind:key="job.id">
Job: {{job.title}}<br>
Description: {{job.description}}<br>
Salary: ${{job.salary}}<br>
Date Posted: {{job.datePosted}}<br>
<router-link :to="`/job/${job.id}`">Learn More</router-link>
点击了解更多会转到正确的工作页面。但是我如何动态地显示那个特定的工作呢?
在作业页面中,在我拥有的脚本中:
created() {
console.log(this.$route.params.id); // prints value of :id
},
通过控制台日志,我看到它可以访问正确的作业页面。但它并没有在页面上动态显示一项工作。访问特定作业需要在 HTML 中包含什么内容?
工作页面的 HTML,截至目前(不包括 ul/li 标签):
<vue-panel v-bind:key="job.id">
Job: {{job.title}}<br>
Description: {{job.description}}<br>
Salary: ${{job.salary}}<br>
Date Posted: {{job.datePosted}}<br>
【问题讨论】:
-
单个作业页面显示的是什么?一切,还是什么都没有?在您的第二页中,
job变量是如何设置的? -
@MikeB.,
job页面不显示任何内容。Jobs页面准确地显示所有作业的列表,并且正确地重定向到job/:id页面。不知道我是否理解你的最后一个问题。data():列出了job:[]和id: ""。这只是job页面:jsfiddle.net/runningraptor/97nyrvk5/5 -
job是空数组?你如何设置这个变量的值? -
@ittus,我正在从静态 JSON 文件中读取
jobs数组。 -
听起来您已经成功地从路由参数中获取了作业 ID,因此您只需要使用它来设置“作业”数据变量,以便页面可以访问并显示它(
job应该以对象而不是数组开始)。您可以在 created() 函数中执行此操作,即this.job = jobs.find(j => j.id == this.$route.params.id);如果您没有.find(...)函数,.filter(...)[0]应该执行相同的操作。
标签: vue.js