首页 > 网络编程 > JavaScript > 正文

微信小程序实现留言板(Storage)_javascript技巧

2018-11-10 10:00:51

本文为大家分享了微信小程序实现留言板的具体实现方法,供大家参考,具体内容如下

先说一下小程序的开发环境之类的基础东西

1.到微信公众平台下载开发者工具。安装

2.appID与没有appID的区别是,appID可以用真机预览,而没有就不行

3.目录解释:

a)pages放页面,每个都必须含有js/json/wxml/wxss四个文件。

js文件类似于js文件,json是配置,比如整个页面顶端的名字颜色之类的,wxml类似于html,wxss类似于css。

其中代码格式也相似。

b)utils中放公共js。

c)app开头的三个文件必备。

留言板:

1.先写wxml,然后加入class后写样式。通过bindtab绑定js中的函数。在js中添加函数。

index.wxml

<!--index.wxml--><!--页面的实现,相当于html--><view class="msg-box"> <!--留言区--> <view class="send-box">  <input value='{{inputVal}}' bindinput='changeInputVal' class="input" type="text" placeholder='请留言...' placeholder-class='place-input' />  <button size='mini' type="primary" bindtap='addMsg'>添加</button><!--bindtap相当于onclick--> </view>  <text>刷新后添加的数据</text> <text class="msg-info" wx:if="{{msgData.length==0}}">暂无留言...^_^</text>   <!--当留言列表为空时显示本句-->  <!--留言列表 -->  <view class="list-view">  <view class="item" wx:for="{{msgData}}" wx:key="{{index}}"><!--循环显示msgData中的数据,key是必须的,否则会出现警告-->   <text class='text1'>{{item.msg}}</text> <!--item是固定的,msg对应msgData中的名-->   <icon data-index="{{index}}" class="close-btn" bindtap='deleMsg' type="cancel"></icon>   </view> </view>  <text>从storage取出的数据</text> <text class="msg-info" wx:if="{{msgData1.length==0}}">暂无留言...^_^</text>   <!--当留言列表为空时显示本句-->  <view class="list-view">  <view class="item" wx:for="{{msgData1}}" wx:key="{{index}}"><!--循环显示msgData中的数据,key是必须的,否则会出现警告-->   <text class='text1'>{{item.msg}}</text> <!--item是固定的,msg对应msgData中的名-->   <icon data-index="{{index}}" class="close-btn" bindtap='deleMsg1' type="cancel"></icon>   </view> </view><button type="primary" size='mini' bindtap='showStorage'>storage</button> </view>

其中wx:if和wx:for都是类似于c:if和c:for的写法。

view类似于div,可以嵌套。

text类似于p,button中的size可以设置大小,type可以选择微信自带的样式

icon是微信自带的图标,有多种。

{{msgData}}是通过嵌套的两个大括号来去js中page{data:{}}中的参数。

wx:key是要写的,不写会出警告。

item是固定的,可以修改的是点后面的参数

2.编写样式:

index.wxss

/**index.wxss**//*实现样式,类似于css*/.msg-box{ padding: 20px;}.send-box{ display: flex;}.input{ border: 1px solid #ccc; padding: 5px; border-radius: 5px;}.msg-info{ display: block; margin: 10px 0 0 0; color: #339900;}.place-input{ color: salmon;}.list-view{ margin: 20px 0 0 0;}.item{ overflow: hidden; border-bottom: 1px dashed #ccc; height: 30px; line-height: 30px;}.text1{ float: left;}.close-btn{ float: right; margin: 5px 5px 0 0;}

基本跟css没什么差别。

3.对应写js,根据wxml中的bindtab或者bindinput之类的绑定事件来进行编写

//index.js//实现函数Page({  data: {  inputVal: "",//留言框内的数据  msgData: [],//所有留言数据  msgData1:"" },  changeInputVal(ev) {   this.setData({    inputVal: ev.detail.value//将留言框的数据存储到inputVal中,方便添加留言时获取   });  },  addMsg() {   //console.log(this.data.inputVal);   var list = this.data.msgData;//获取所有留言   list.push({//向list中添加当前添加的留言    msg: this.data.inputVal   });   this.setData({//将所有留言更新到msgData中。    msgData: list,    inputVal: ""//清空留言框内的内容   });   /*获取storage中的所有数据*/    var list1 = this.data.msgData1;   for(var i=0;i<list.length;i++){    list1.push({     msg:list[i].msg    });   }   /*把新添加的数据添加到要存入stroage的数组中*/    wx.setStorage({    key: 'msgData1',    data: list1,   })   /**把数据存至stroage */   var that = this;   wx.getStorage({    key: 'msgData1',    success: function (res) {     that.setData({      msgData1: res.data     });    },   })     },  deleMsg(ev) {   var list=this.data.msgData;   var n = ev.target.dataset.index;//获取当前留言的index   list.splice(n, 1);//删除索引号为n的数据   this.setData({//将所有留言更新到msgData中    msgData: list   });  },  deleMsg1(ev) {   var list = this.data.msgData1;   var n = ev.target.dataset.index;//获取当前留言的index   list.splice(n, 1);//删除索引号为n的数据   this.setData({//将所有留言更新到msgData中    msgData1: list   });  }, /**  * 生命周期函数--监听页面加载  */ onLoad: function (options) {  /**把storage中的内容取出并赋值给msgData1 */  var that = this;  wx.getStorage({   key: 'msgData1',   success: function (res) {    that.setData({     msgData1: res.data    });   },  }) },})

其中,整个文件必须要有的就是最外层的page({}),自带了许多函数,如onload,可以酌情使用。本例中使用了onload。

data用来放置数据,在index.js中的数据是index.wxml可以使用的数据。如果是在app.js中带有的data,则是全局变量。在wxml中要获取可以通过getapp().参数名来获取全局变量。

本例是实现了随着程序的生命周期而存在的msgData和存放到本地缓存的msgData1两种。

其他文件的内容可以不做任何修改。至此,本留言板完成。

4.可以修改在界面最顶端的显示字样

index.json

{ "navigationBarTitleText": "简易留言板"}

json文件中必须含有最外层的一个大括号。

如果是在app.json中设置,那么所有没有自定义标题的界面都是显示“简易留言板”

如果是在index.json中设置,那么只有index.wxml中显示“简易留言板”

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • 微信小程序实现留言板功能
  • 小程序实现留言板
  • 微信小程序实现留言板
  • 微信小程序实现留言功能
  • 相关标签:JavaScript
  • 本文发布HTML5中文学习网 ,转载请注明出处,感谢您!
  • 相关文章


  • 曝网友假装外国人写投诉信 ofo秒退押金并回函致歉
  • 苹果市值缩水逾2000亿美元 遭多家投行下调目标价
  • Asp.net Core与类库读取配置文件信息的方法_实用技巧
  • asp.net在Repeater嵌套的Repeater中使用复选框详解_实用技巧
  • 利用IIS调试ASP.NET网站程序的完整步骤_实用技巧
  • Asp.Net Core轻松学习系列之配置文件_实用技巧
  • ASP.NET 页生命周期概述(小结)_实用技巧
  • 详解ASP.NET Core WebApi 返回统一格式参数_实用技巧
  • 2018年网络流行语有哪些?2018年十大网络流行语盘点
  • 华为首席财务官孟晚舟被暂扣 深圳市政府要求加方立即放人!
  • 独孤九贱(4)_PHP视频教程

    江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。 PHP中文网出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...

    独孤九贱(5)_ThinkPHP5视频教程

    ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《php.cn独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...

    独孤九贱(1)_HTML5视频教程

    《php.cn原创html5视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。 ...

    ThinkPHP5实战之[教学管理系统]

    本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。

    PHP入门视频教程之一周学会PHP

    所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...

    作者信息

    kevin

    永远在学习的路上!

    相关教程

  • javascript初级视频教程 javascript初级视频教程
  • jquery 基础视频教程 jquery 基础视频教程
  • javascript三级联动视频教程 javascript三级联动视频教程
  • 独孤九贱(3)_JavaScript视频教程 独孤九贱(3)_JavaScript视频教程
  • 独孤九贱(6)_jQuery视频教程 独孤九贱(6)_jQuery视频教程
  • 热门教程