基于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 预解析
Oct 25 Javascript
如何学习Javascript入门指导
Nov 01 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
Dec 13 Javascript
js密码强度实时检测代码
Mar 02 Javascript
js实现加载更多功能实例
Oct 27 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
Dec 12 Javascript
jQuery弹出层插件popShow(改进版)用法示例
Jan 23 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
Oct 27 Javascript
通过fastclick源码分析彻底解决tap“点透”
Dec 24 Javascript
前后端如何实现登录token拦截校验详解
Sep 03 Javascript
浅谈Javascript中的对象和继承
Apr 19 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
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
Javascript this指针
2009/07/30 Javascript
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
机械绘图员岗位职责
2013/11/19 职场文书
新春文艺演出主持词
2014/03/27 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
python实现过滤敏感词
2021/05/08 Python
Python机器学习之PCA降维算法详解
2021/05/19 Python
世界十大狙击步枪排行榜
2022/03/20 杂记
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python