基于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 相关文章推荐
关于恒等于(===)和非恒等于(!==)
Aug 20 Javascript
js css样式操作代码(批量操作)
Oct 09 Javascript
Javascript图像处理—为矩阵添加常用方法
Dec 27 Javascript
js中数组Array的一些常用方法总结
Aug 12 Javascript
详谈javascript中的cookie
Jun 03 Javascript
JS封装通过className获取元素的函数示例
Dec 20 Javascript
基于vue实现swipe轮播组件实例代码
May 24 Javascript
vue拖拽排序插件vuedraggable使用方法详解
Aug 21 Javascript
面试题:react和vue的区别分析
Apr 08 Javascript
javascript面向对象创建对象的方式小结
Jul 29 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
Nov 01 Javascript
JavaScript对象原型链原理详解
Feb 05 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文件上传(实例)
2013/10/27 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
详解angular2.x创建项目入门指令
2018/10/11 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
ES6 let和const定义变量与常量的应用实例分析
2019/06/27 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
Python设计模式之代理模式实例
2014/04/26 Python
python使用nntp读取新闻组内容的方法
2015/05/08 Python
用python与文件进行交互的方法
2018/03/01 Python
Python高斯消除矩阵
2019/01/02 Python
Django用户认证系统 User对象解析
2019/08/02 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
幼儿园教学随笔感言
2014/02/23 职场文书
大学新生入学教育方案
2014/05/16 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
学习作风建设心得体会
2014/10/22 职场文书
单位计划生育责任书
2015/05/09 职场文书
天气温馨提示语
2015/07/14 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis