vue从后台渲染文章列表以及根据id跳转文章详情详解
作者:Sandy-yan 发布时间:2024-04-30 10:39:01
目录
前言:
一、query和params
(1)query方式传参和接收参数
(2)params方式传参和接收参数
二、从后台渲染列表
(4)根据id获取文章详情
三、总结
前言:
vue里面怎样从后台渲染列表,怎么根据文章的id获取文章的具体内容。以及值与值之间的传递,vue-router 里query和params的区别及使用。
一、query和params
先来看看query和params是怎样传值和接收参数的吧!后面会用到的哦!
(1)query方式传参和接收参数
query相当于get请求,页面跳转的时候,可以在地址栏看到请求参数
传递参数:把数据发送出去
this.$router.push({
path:'/aaa/bbb/ccc',
query:{
id:aaaid
}
})
接收参数:在其他的组件中接收传过来的参数
this.$route.query.id
*注:接收参数是r o u t e ∗ ! ! ! ∗ ∗ 而 不 是 route*!!!** 而不是route∗!!!∗∗而不是router!
$route是当前router跳转的对象,可以获取router实例里的name、path、query、pramas。
(2)params方式传参和接收参数
params相当于post请求,参数不会在地址栏中显示。
传参:
this.$router.push({
name:'aaa',
params:{
id:aaaid
}
})
接收参数:
this.$route.params.id
注意:params传参,push里面是name不是path!!
二、从后台渲染列表
这里我们要创建一个vue组件,名为ArticleList,用于存放渲染的文章列表。
下面是ArticleList的父组件:
假设叫information
<template>
<div class="Information">
<section>
<p>文章列表为:</p>
<ArticleList
:ArticleList_props_Data="ArticleList_props_Data"
:project_article_Data="project_article_Data"
></ArticleList>
//给子组件传值
</div>
</section>
</div>
</template>
<script>
import axios from 'axios';
import Qs from 'qs';
import ArticleList from "@/components/ArticleList";
export default {
name: "information",
components: {
ArticleList,
},
data() {
return {
current:'1',
ArticleList_props_Data: {
current_path: '/index/information'
},
project_article_Data: [
{
id: ``,
title: ``,
intro: ``,
text: ``,
issue_time: ``,
source:``
}
]
}
},
created(){
this.get_project_article_Data()
},
methods: {
get_project_article_Data() {
axios({
url: `/API/aaa/bbb/ccc/project?${this.current}`, // 后端的接口地址
method: "get",
params: {
page: this.current,
},
transformRequest: [
function (data) {
data = Qs.stringify(data);
return data;
},
],
headers: {
"Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
},
dataType: "json",
})
.then((res) => {
console.log("连接成功"); // 这里多打印一句提示,只是为了更直观一点
console.log(res); // res 是后端回传的数据,如果连接成功,可以把res打印出来。
this.project_article_Data=res.data.datas
})
.catch(function (error) {
console.log("连接失败"); // 作用同上
console.log(error); // 如果连接失败,会抛出错误信息。
});
},
},
}
</script>
<style scoped lang="scss">
//这里就不写css了
</style>
在ArticleList组件里面写入:
<template>
<div class="hello">
<div class="project_content">
<div
class="project_article_box"
v-for="item in project_article_Data"
:key="item.id"
>
<h1
class="project_article_title"
@click="to_article_content(item.id)"
>
<a href="javascript:" rel="external nofollow" >{{ item.title }}</a>
</h1>
<p class="project_article_intro">{{ item.intro }}</p>
<p class="project_issue_time">
<span>{{item.issue_time}}</span>来源: {{ item.source }}
</p>
<a-divider />
</div>
</div>
</div>
</template>
<script>
export default {
name: "articlelist",
props: {
project_article_Data: Array, //注册父组件中导入的数据
ArticleList_props_Data: Object,
},
data() {
return {
};
},
methods: {
//根据文章id跳转文章详情
to_article_content(article_id) {
this.$router.push({
path: `${this.ArticleList_props_Data.current_path}/article_content`,
//根据路径跳转到文章在详情页并给详情页传递id
query: { article_id: article_id },
});
},
},
};
</script>
<style scoped lang="scss">
</style>
(4)根据id获取文章详情
再创建一个名为“article_content”的vue组件,用来放置文章的详情信息。
acticle_content如下:
<template>
<div class="Article_Content">
<section>
<div id="content">
<div class="article_container">
<p>article_id:{{ $route.query.article_id }}</p>
<p class="article_text_title">
{{article_text_title}}
</p>
<p class="article_text_message">发布时间:{{article_text_message}}</p>
<a-divider />
<p class="article_text_content" v-html="this.article_text_content">
</p>
</div>
</div>
</section>
</div>
</template>
<script>
import axios from "axios";
import qs from "qs";
export default {
name: "Article_Content",
props: {
},
data() {
return {
article_id: this.$route.query.article_id, //通过路径跳转传过来的id
article_text_title:"",
article_text_message:'',
article_text_content:'',
};
},
created() {
this.get_article_data(this.article_id);
},
methods: {
/*
功能:获取文章内容
参数:article_id 文章id
*/
get_article_data(article_id) {
//获取传过来的具体id值
axios({
url: `/API/aaa/bbb/${this.article_id}`, // 后端的接口地址
method: "get",
params: {
//给后台传递id地址
id: this.article_id,
},
transformRequest: [
function (data) {
data = qs.stringify(data);
return data;
},
],
headers: {
"Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
},
dataType: "json",
})
.then((res) => {
console.log("连接成功"); // 这里多打印一句提示,只是为了更直观一点
console.log(res); // res 是后端回传的数据,如果连接成功,可以把res打印出来。
this.article_text_title = res.data.title
this.article_text_message= res.data.issue_time
this.article_text_content=res.data.content
this.article_category=res.data.article_category
})
.catch(function (error) {
console.log("连接失败"); // 作用同上
console.log(error); // 如果连接失败,会抛出错误信息。
});
},
},
};
</script>
在index.js中去注册组件(router),注意路径!!!
import information from '@/components/information'
import ArticleList from '@/components/ArticleList'
import Article_Content from '@/pages/Article_Content'
const router = [
{
path: '/index/information',
name: 'information',
component: nformation,
},
{
path: '/index/information/article_content',
name: 'article_content',
component: article_content
}
]
三、总结
1、params和query的区别及使用
2、根据id获取详细信息,id就藏在点击事件里面,当点击时,就跳转到详情页并把此时传过来的id传给后台,在详情页上根据id获取后台返回的数据并渲染出来。
来源:https://blog.csdn.net/weixin_48931875/article/details/111072161


猜你喜欢
- 写完调用天气接口的demo之后,小程序调用天气接口并且渲染在页面,顺便再调用了一下美图的接口API:美图APIurlwxml:<vie
- 一、事务:事务是逻辑上的一组操作,要么都成功,要么都失败!——————————————————————————————————1、SQL执行
- 1、先说结论:使用xml-rpc的机制可以很方便的实现服务器间的RPC调用。2、试验结果如下:3、源码如下:服务器端的源代码如下:impor
- 本文实例讲述了python中range()与xrange()用法。分享给大家供大家参考,具体如下:据说range比xrange开销要大,原因
- 最近python代码遇到了一个神奇的需求, 就是如果将python utc datetime转换为时间戳.百度找到都是使用time.mkti
- 以下公共方法支持列表,元组,字典,字符串。内置函数Python 包含了以下内置函数:函数描述备注len(item)计算容器中元素个数del(
- Aphorismthe fight is worth it.django models 连接 sqlite 数据库django 版本为 1.
- 本文研究的主要是Python中optparser库的相关内容,具体如下。一直以来对optparser不是特别的理解,今天就狠下心,静下心研究
- 1. 监测端口我们要引用的socket模块来校验端口是否被占用。1.1 socket是什么?简单一句话:网络上的两个程序通过一个双向的通信连
- Python操作MySQL主要使用两种方式:原生模块 pymsqlORM框架 SQLAchemypymqlpymsql是Python中操作M
- 我们知道,做web开发,在调试时需要反复启动整个工程,那么上一个工程占用的端口,在下一次工程启动时就不能用了,因为占用的端口没有释放,但是手
- 如下所示:import pandas as pdfrom pandas import DataFrameseries = pd.read_c
- 在使用python做大数据和机器学习处理过程中,首先需要读取hdfs数据,对于常用格式数据一般比较容易读取,parquet略微特殊。从hdf
- 第一个问题是重命名数据库问题:在企业管理器中是无法直接对数据库重命名的,只能在查询分析器中操作create proc killspid (@
- 载入库绘制表格我们需要用到python库中的matplotlib库import matplotlib.pyplot as plt一、折线图#
- 1.首先axios不支持vue.use()方式声明使用看了所有近乎相同的axios文档都没有提到这一点建议方式在main.js中如下声明使用
- 一,子选择基本用法 1,子选择的定义 子迭择允许把一个查询嵌套在另一个查询当中。比如说:一个考试记分项目把考试事件分为考试(T)和测验(Q)
- 无意中还找到了CentOS的专业论坛,记住:http://www.centospub.com于是,开始的学习配置本次环境:CentOS系统,
- JSON编码支持的基本数据类型为 None , bool , int , float 和 str , 以及包含这些类型数据的lists,tu
- 本文研究的主要是Django权限机制的相关内容,具体如下。1. Django权限机制概述权限机制能够约束用户行为,控制页面的显示内容,也能使