vue+vue-router+axios+element-ui构建vue实战项目之七(渲染content.vue内容)

在上一节《vue+vue-router+axios+element-ui构建vue实战项目之六(渲染index.vue列表)》中,我们从后端接口获取数据,并成功渲染出一个列表。

这节内容,我们来做内容页面。

编写src/page/content.vue 文件

话不多说,直接上代码

 1 <template>
 2   <div>
 3     <h3>{{getMsg.title}}</h3>
 4     <p>作者:{{getMsg.author.loginname}}&nbsp;&nbsp;发表于:{{$utils.formatDate(getMsg.create_at)}}</p>
 5     <hr>
 6     <article v-html="getMsg.content"></article>
 7     <h4>网友回复:</h4>
 8     <ul>
 9       <li v-for="item in getMsg.replies">
10         <p>评论者:{{item.author.loginname}},&nbsp;&nbsp;发表于:{{$utils.formatDate(item.create_at)}}</p>
11         <article v-html="item.content"></article>
12       </li>
13     </ul>
14   </div>
15 </template>
16 <script>
17   export default {
18     data (){
19       return {
20         id: this.$route.params.id,
21         getMsg: {}
22       }
23     },
24     mounted (){
25       this.getContent()
26     },
27     methods:{
28       getContent (){
29         this.$http.get(‘topic/‘+this.id)
30           .then(res => {
31             res.data.success && (this.getMsg = res.data.data)
32           })
33           .catch(err => {
34             console.log(err)
35           })
36       }
37     }
38   }
39 </script>
40 <style lang="scss">
41   @import "../style/style";
42 </style>

保存文件,然后我们随便点开一篇文章,看到的结果如下:

好,按照我们的需求已经渲染出来了。

-_-!!,请忽略样式!

讲解下里面的重点部分

template部分

其他的内容,我们在列表页面已经见过了。这里第一次出现 <article v-html="dat.content"></article> 这个东西。

同样是渲染内容, v-html 和 v-text 有什么区别呢?

其实区别非常简单,v-text 会把所有的内容当成字符串给直接输出出来。

而 v-html 会把字符串给转换为 html 标记语言给渲染出来。这部门更多内容,请参考:https://cn.vuejs.org/v2/api/#v-html

script部分

代码基本上是一致的,重点是 id: this.$route.params.id, 这一句。

还记得我们前面配置的路由吗?如果忘了,请移步vue+vue-router+axios+element-ui构建vue实战项目之四(修改App.vue、router和page文件)

我们是这么配置的:

 1 export default new Router({
 2   routes: [
 3     {
 4       path: ‘/‘,
 5       name: ‘首页‘,     //path别名,可删除
 6       meta:{
 7         title: ‘首页‘   //设置页面title
 8       },
 9       component: index
10     },
11     {
12       path: ‘/content/:id‘,
13       name: ‘详情‘,
14       meta:{
15         title: ‘详情‘
16       },
17       component: content
18     }
19   ]
20 })

重点:path: ‘/content/:id‘, 中,我们使用了 :id 这个东西。

这是动态路由匹配。参考文档: 《vue动态路由匹配

我们需要从 url 中获取 id, 然后根据这个 id 来进行数据的查询。

从浏览器地址可以看到, url已经 包含了这个 id 。

http://localhost:8080/#/content/5c7e9a0d90c14711cc8ca9d8

如上:5c7e9a0d90c14711cc8ca9d8 这个就是 id。

我们如何取出来呢?

不用想很多复杂的事情,vue-router 早就给我们准备了解决方法了。

我们可以在项目中打印如下代码:

console.log(this.$route)

打印结果,如图

我们再看下我们的接口数据调用,代码如下:

1 this.$http.get(‘topic/‘+this.id)
2           .then(res => {
3             res.data.success && (this.getMsg = res.data.data)
4           })
5           .catch(err => {
6             console.log(err)
7           })

等于没什么要说的,就是把数据拿过来了而已,需要注意的是,我们的请求的接口地址是根据 id 进行变化的。

所以,我这边采用了字符串拼接的方法,‘topic/‘ + this.id 来得到我们真正想要请求的接口数据。

好,到这里为止,我们已经非常顺利的把列表页面和内容页面已经渲染出来了!

如果我们按照这个步骤,相信你也顺利的得到了一样的结果。

如果文章中存在错误的地方,麻烦请大家在评论中指正,以免误人子弟,谢谢!

原文地址:https://www.cnblogs.com/zhaoyongblog/p/10484743.html

时间: 2024-08-25 04:37:56

vue+vue-router+axios+element-ui构建vue实战项目之七(渲染content.vue内容)的相关文章

vue按需引入Element UI的方法

在我们的实际项目开发中,多数是采用按需引入的模式来进行开发的,那么具体应该如何操作呢,可能会有许多新人傻傻分不清楚,具体将在下文讲到. 首先我们先vue create demo创建一个项目出来此时我们的项目是这样的 此时我们在终端输入 vue add element 可以看到让我们选择全部引入还是按需引入,此时我们选择按需引入,Import on demand 然后选择zh-CN,这时候我们可以看到此处多了一个plugins的文件夹,里面有一个element.js的文件,并且main.js中多了

vue+element ui table组件封装,使用render渲染

后台管理经常会用到表格,一开始封装了一个常用的功能性表格,点击这里: 后来由于需求增加,在表格中还会用到switch,select,input等多种组件,每次都要在html中增加<el-table-column></el-table-column>, 维护起来相当麻烦,就想到了使用render渲染. 组件内部封装代码: <template> <el-table :data="tableData" size="medium"

vue+vuex+router+element ui

1. cnpm install -g vue-cli 项目的main.js引入import Vue from 'vue' 2. 创建项目 vue init webpack +项目名称 3.  cnpm install ----->下载依赖文件 npm run dev ----->运行项目 4.config文件夹,下面的index.js里面修改port端口号 /////////////////////////////////////// 好像vue 在2.0之后自动的就引入了router和vue

vue模块化(echart+element ui)

最近看了下vue的框架,随手做了个项目,记录分享下 技术框架: vue.js + webpack + element ui + echart 首先看下npm package.js 上面的图 主要是配置的是npm 打包命令 和引入vue-route vue的路由文件 和element ui 文件 下面这个是 引入echart.js 文件, 基本资料就这些. 首先我们开始构建一个vue-cli项目 1.首先node环境(这里就不多啰嗦了) 2.执行vue-cli命令 npm install --gl

vue+element ui项目总结点(一)select、Cascader级联选择器、encodeURI、decodeURI转码解码、一级mockjs用法、路由懒加载三种方式

不多说上代码: <template> <div class="hello"> <h1>{{ msg }}</h1> <p>Element UI简单Cascader级联选择器使用</p> <el-cascader :options='options' v-model="selectedOptions" @change="handleChange"> </el-

Vue框架Element UI教程(二)

原文:https://www.jianshu.com/p/1704b5935a8 [时间选择器] Element UI手册:https://cloud.tencent.com/developer/doc/1270 中文文档:http://element-cn.eleme.io/#/zh-CN github地址:https://github.com/ElemeFE/element 前一篇已经安装好了Element UI环境,现在开始来实际操作框架提供的一些组件的运用了. 在准备好以下文章里面的内容

vue+element UI实现分页组件

1.前言 在web页面中,常常需要将后台查询到的数据以表格形式展示出来,而这些数据量往往会非常庞大,如果将所有要展示的数据一次性请求获取并展示到页面上,那页面长度势必会变得非常的长,很不美观.更重要的是,如果数据量过于大,在页面加载时一次性请求全部数据将会耗费大量网络资源,性能极低.但是,如果我们可以将数据分页展示,这样页面首先不会变的冗长,另外只有用户点击页码才会发出请求并且每次请求的数据量也不会很大,这就极大的节省了网络资源,提高了性能.本文就以vue结合element UI实现一个数据分页

vue+element UI实现多级导航菜单

1.前言 在某次日常开发中,项目要求页面的导航菜单需要动态加载,即菜单不能在页面上写死,菜单上的数据由后端开发从数据库中获取返回给前端使用,前端拿到数据后再通过解析数据最终将菜单渲染出来.由于菜单有可能是多级的,所以我们需要使用递归的方式,一层一层的递归数据,将多级菜单完整显示出来.本篇博文借助element UI组件库中的Navmenu导航菜单组件,将其进行改造后封装成一个多级导航菜单组件. 2.工作流程 组件封装好之后,由父组件调用该组件,父组件先向后端发送请求获取菜单数据,然后将菜单数据传

vue 集成 element ui

打开vue项目所在的项目路径 输入 npm install element-ui -S 安装element ui 表示安装成功 在vue项目下的node_modules下会显示 element ui 配置element ui 改变项目目录中的main.js文件: 初始main.js文件: import Vue from 'vue'import App from './App'import router from './router'import ElementUI from 'element-u