基于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 用记忆函数快速计算递归函数
Mar 15 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
Aug 04 Javascript
javascript实现五星评分功能
Nov 10 Javascript
JS使用post提交的两种方式
Dec 03 Javascript
javascript中闭包(Closure)详解
Jan 06 Javascript
Jquery轮播效果实现过程解析
Mar 30 Javascript
JS框架之vue.js(深入三:组件1)
Sep 29 Javascript
javascript将list转换成树状结构的实例
Sep 08 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
Jun 12 jQuery
使用 node.js 模仿 Apache 小部分功能
Jul 07 Javascript
Javascript 对象(object)合并操作实例分析
Jul 30 Javascript
ElementUI之Message功能拓展详解
Oct 18 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
sae使用smarty模板的方法
2013/12/17 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
快速了解python leveldb
2018/01/18 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
python 标准差计算的实现(std)
2019/07/29 Python
django中瀑布流写法实例代码
2019/10/14 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
美国汽车交易网站:Edmunds
2016/08/17 全球购物
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
艺术设计专业个人求职信
2014/04/10 职场文书
学校文明单位申报材料
2014/05/06 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
售房协议书范本2014
2014/10/23 职场文书
2014年调度员工作总结
2014/11/19 职场文书
法院执行局工作总结
2015/08/11 职场文书
《社戏》教学反思
2016/02/22 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python