使用Vue组件为页面添加评论

vue

简介

首先这是一个Laravel练手项目,使用blade和Vue组件混合开发Web页面。

本文章将使用Vue.js组件为博客详情页添加评论功能,主要实现以下功能:

  • 文章页面可查看评论
  • 用户可进行评论,并且不需要刷新视图

准备工作

首先新建好Vue组件:Comment.vue 并将它在入口(默认为app.js)进行注册:

Vue.component('comments',require('./components/blog/Comments.vue').default)

上一篇文章讲到了评论多态关联,所以这里的评论组件化,可用于博客页面和新闻页面。所以在vue页面中添加prop参数:type,并在blog的show页面引入,<comments type="blog"></comments>

	props:[

"type"

],

mounted(){

console.log(this.type);

}

在console中调试成功,输出’blog’

同时还需要一个id参数,方法如上……

开搞

样式……

样式这个东西,得讲究缘分,有时候你要它好看,它就丑,有时候……好吧它一直很丑,就是下面这样

API请求

这里使用的是axios,在Vue中调用十分方便,先在入口申明:

import axios from 'axios'

Vue.prototype.$ajax = axios;

获取评论

采用评论接口xxx/api/blog/{id}/comment

	getComments: function() {

this.$axios.get("/api/blog/" + this.id + "/comment").then(res => {

console.log(res.data);

});

}

测试通过~

接下来就是绑定数据了

	<ul>

<li v-for="item in comments">

<div class="content">

<div class="head">

<img src="/image/head.jpg">

</div>

<div class="body">{{item.body}}</div>

</div>

<div class="action">

<a href v-show="false">

<span>

<i class="iconfont icon-trash"></i> 删除

</span>

</a>

</div>

</li>

</ul>

正常~~~

同时评论计数也需要绑定一下,这个在blog对象中存在,直接传递就可以了

创建评论

接口为xxx/api/blog/{{id}}/comment?api_token=xxxxxxxxx

	sendComment:function(){

var api_url = "/api/blog/" + this.id + "/comment";

var api = window.tokenize ? window.tokenize(api_url) : api_url;

this.$axios.post(api,{

"body" : this.comment

}).then(res => {

this.comment = "";

this.comments.unshift(res.data.data);

});

}

成功

以上就是实现内容,才疏学浅,望见谅……

以上是 使用Vue组件为页面添加评论 的全部内容, 来源链接: utcz.com/z/378229.html

回到顶部