基于vue和bootstrap实现简单留言板功能


Posted in Javascript onMay 30, 2020

本文实例为大家分享了vue实现简单留言板功能的具体代码,供大家参考,具体内容如下

作为一个刚开始接触vue的前端小白,我想在这里记录一些学习过程,希望和大家一起进步,如有不妥处之处,请多多指教呦。

今天呢,是我学习vue的第二天,我想制作一个简易的留言板。功能很简单,就是数据的增删改查,下面开始步入正题:
大致布局如下:

基于vue和bootstrap实现简单留言板功能

1.html布局

如果大家不想自己去写css样式,使用bootstrap框架是一个很好地选择,它提供了一套响应式、移动设备优先的流式栅格系统。

<div id="app" class="container" >
 <h3>{{title}}:</h3>
 <ul class="form-group" style="max-height: 300px;overflow: auto;">
 <li class="list-group-item row" v-for="(item,index) in search" :key="item.id">
  <span class='col-sm-1' >{{item.nikename}}:</span>
  <span class='col-sm-5'>{{item.content}}</span>
  <span class='col-sm-2'>{{item.date}}</span>
  <button class='col-sm-2 btn btn-danger' type="button" @click="del(index,item.id)">删除</button>
  <button class='col-sm-2 btn btn-info' type="button" @click="checkPre(index,item.id)">修改</button>
 </li>
 </ul>
 <br><br><br>
 <form class="form-horizontal" v-show="bl">
 <div class="form-group">
  <label for="search" class="col-sm-1 control-label">搜索</label>
  <div class="col-sm-11">
  <input type="text" class="form-control" id="search" placeholder="搜索留言" v-model="query" >
  </div>
 </div>
 <div class="form-group">
  <label for="nikename" class="col-sm-1 control-label">昵称</label>
  <div class="col-sm-11">
  <input type="text" class="form-control" id="nikename" placeholder="请输入昵称" v-model="nikename">
  </div>
  </div>
  <div class="form-group">
 <label for="content" class="col-sm-1 control-label">内容</label>
 <div class="col-sm-11">
  <textarea id="content" class="form-control" rows="3" v-model="content"></textarea>
 </div>
  </div>
  <button type="button" class="btn btn-success col-sm-1 col-sm-push-9" @click="add" >发表</button>
  <button type="button" class="btn btn-danger col-sm-1 col-sm-push-10" @click="clear" >清屏</button>
 </form> 
 <form class="form-horizontal" v-show="!bl">
  <div class="form-group">
 <label class="col-sm-1 control-label">修改:</label>
 <div class="col-sm-11">
  <textarea class="form-control" rows="3" v-model="changeContent"></textarea>
 </div>
  </div>
  <button type="button" class="btn btn-success col-sm-1 col-sm-push-11" @click="confirm">确认修改</button>
 </form> 
</div>

2.数据如下:由于没有连接数据库,所以采用了模拟数据

data:{
 title:'留言板',
 nikename:'',
 content:'',
 date:'',
 query:'',//查询的内容
 changeContent:'',//修改后的数据
 bl:true,
 list:[
 {id:1,nikename:"笑话",content:'今天天气真好',date:'2020-02-27-18:06'},
 {id:2,nikename:"小草",content:'是呀,那咱们出去晒太阳吧',date:'2020-02-26-18:06'}
 ]
 },

3.增加(发表)功能:

add() {
 this.list.push({
  id: this.list.length + 1,
  nikename: this.nikename,
  content: this.content,
 date:this.getdate()
 })
 this.nikename='';
 this.content='';
 },

用户输入的昵称和内容都采用了双向绑定,时间是获取的当下时间,发表按钮使用@click指令绑定了add函数。发表完后将昵称和内容框清空。

4.删除功能:

del(index,id){
 this.list.splice(index,1)
 }
clear(){
 this.list = [];//不可直接将数组长度设为零,这是非响应式的操作
 },

删除按钮绑定del,点击时删除一条评论,清屏按钮绑定clear,点击时删除所有评论。

5.修改功能:

checkPre(index,id){
 this.bl = !this.bl;
 this.nikename = this.list[index].nikename;
},
confirm(){
 this.list.forEach(function(item,index){
 if(item.nikename == vm.nikename){
 item.content = vm.changeContent;
 item.date = vm.getdate();
 }
 })
 this.bl = !this.bl;
 vm.nikename='';
},

点击修改,改变vm.bl的值,并记录当前评论的昵称,修改框使用了v-show指令,当vm.bl值为false时显示。点击确认修改,根据当前昵称寻找到要修改的评论,修改它的内容和发表时间。

6.查询功能:

computed:{
 search(){
 let result = [];
 this.list.forEach((item,index)=>{
 if(item.nikename.includes(this.query) || item.content.includes(this.query)){
 result.push(item)
 }
 })
 return result;
 },
},

查询功能依赖的是查询框输入的内容,因而使用了计算属性。

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

更多vue学习教程请阅读专题《vue实战教程》

以上就是关于本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
Javascript条件判断使用小技巧总结
Sep 08 Javascript
jQuery 源代码显示控件 (Ajax加载方式).
May 18 Javascript
javascript打印大全(打印页面设置/打印预览代码)
Mar 29 Javascript
jquery实现无限分级横向导航菜单的方法
Mar 12 Javascript
jQuery基础_入门必看知识点
Jul 04 Javascript
vue.js选中动态绑定的radio的指定项
Jun 02 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
Jan 25 Javascript
200行代码实现blockchain 区块链实例详解
Mar 14 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
Nov 10 Javascript
js实现通过开始结束控制的计时器
Feb 25 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
Mar 15 Javascript
Vue项目打包压缩的实现(让页面更快响应)
Mar 10 Javascript
JS常见内存泄漏及解决方案解析
May 30 #Javascript
react结合bootstrap实现评论功能
May 30 #Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 #jQuery
JavaScript类的继承多种实现方法
May 30 #Javascript
Vue实现购物车实例代码两则
May 30 #Javascript
vue实现购物车案例
May 30 #Javascript
vue.js实现简单购物车功能
May 30 #Javascript
You might like
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
日期 时间js控件
2009/05/07 Javascript
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
node内置调试方法总结
2018/02/22 Javascript
微信小程序支付功能 php后台对接完整代码分享
2018/06/12 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
Web服务器框架 Tornado简介
2014/07/16 Python
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Django如何将URL映射到视图
2019/07/29 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
EJB与JAVA BEAN的区别
2016/08/29 面试题
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
初中音乐教学反思
2014/01/12 职场文书
接待员岗位责任制
2014/02/10 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
求职自我评价范文100字
2014/09/23 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
Python matplotlib绘制雷达图
2022/04/13 Python