相信在小程序推出公测以后,不少小伙伴都已经抓紧申请注册小程序了。在开发阶段中也碰到了不少的问题,例如
wx.request
数据请求不成功,在数组操做时,不知道如何往数组里push数据,input如何监听用户输入的状态,css的background-image没法获取本地资源等等,本博客会出一个专题,给碰到这些问题的小伙伴解决思路。css
今天咱们主要讲的是,数组操做。
相信对于用过vuejs、reactjs等mvvm框架的童鞋,微信小程序的数组操做就显得很简单啦,原理是同样的。html
这是简单作的一个demo,已经上传到github,到时大伙能够直接下载。咱们主要讲在数组中经常使用的一些操做方法,对数组向前向后插入新的数据、修改数组、删除数组、清空数组,其余的一些操做方式,我会给大伙学习思路。vue
demo地址:
github.com/bluefox1688…react
demo数组操做的例子路径:/pages/array/array.wxml
git
Page({
data: {
list:[{
id:1,
name:'应季鲜果',
count:1
},{
id:2,
name:'精致糕点',
count:6
},{
id:3,
name:'全球美食烘培原料',
count:12
},{
id:4,
name:'无辣不欢生猛海鲜',
count:5
}]
}
})复制代码
咱们初始化一些数据,咱们须要对list的添加新的数据里,须要用到JavaScript concat()
的方法,concat()
方法用于链接两个或多个数组,该方法不会改变现有的数组。
其实咱们的所说的向前向后插入数据,其实也就是把两个数组合拼起来,组成一个新的数组,而后再使用this.setData()
便可渲染到页面上。
咱们看一下在微信小程序里的代码。github
向前插入数据demo小程序
//向前增长数据
add_before:function (){
//要增长的数组
var newarray = [{
id:6,
name:'向前增长数据--'+new Date().getTime() ,
count:89
}];
//使用concat()来把两个数组合拼起来
this.data.list = newarray.concat(this.data.list);
//将合拼以后的数据,发送到视图层,即渲染页面
//大伙请记录,修改了数据后,必定要再次执行`this.setData()`,页面才会渲染数据的。
this.setData({
'list': this.data.list
});
}复制代码
向后插入数据demo微信小程序
//向后增长数据
add_after:function (){
//要增长的数组
var newarray = [{
id:5,
name:'向后增长数据--'+new Date().getTime() ,
count:89
}];
this.setData({
'list':this.data.list.concat(newarray)
});
},复制代码
细心的小伙伴应该会发现,这两段在用concat()
合拼数据时,concat括号里的数据是不同的。向前向后插入数据的区别就在这里了。api
//假设这一段是咱们要新增的数组
var newarray = [{
id:5,
name:'向后增长数据--'+new Date().getTime() ,
count:89
}];
//向前--用newarray与this.data.list合拼
this.data.list = newarray.concat(this.data.list);
//向后--用this.data.list与newarray合拼
this.data.list = this.data.list.concat(newarray);复制代码
对展现的数据进行修改,在开发过程是常见得不在常见的事情啦。数组
//修改数组
edit:function (e){
//这个参数“e”的具体做用,请参考微信小程序官方提供的说明,地址为https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html?t=20161107
var dataset = e.target.dataset;
var Index = dataset.index; //在经过在wxml页面里使用 data-index="{{index}}"传递过来的,是为识别正在编辑修改哪一个数组。
//咱们要修改的数组
this.data.list[Index].name = '修改了内容'+new Date().getTime();
//将合拼以后的数据,发送到视图层,即渲染页面
//大伙请记录,修改了数据后,必定要再次执行`this.setData()`,页面才会渲染数据的。
this.setData({
list:this.data.list
});
}复制代码
有增有改也必有删。
删除须要用到JavaScript splice()
方式,splice()
方法向/从数组中添加/删除项目,而后返回被删除的项目。
//删除
remove:function (e){
var dataset = e.target.dataset;
var Index = dataset.index;
//经过`index`识别要删除第几条数据,第二个数据为要删除的项目数量,一般为1
this.data.list.splice(Index,1);
//渲染数据
this.setData({
list:this.data.list
});
}复制代码
增修删以后,还得再来一个清空数据呀。
//清空
clear:function (){
//其实就是让数组变成一个空数组便可
this.setData({
list:{}
});
}复制代码
今天咱们主要讲了增修删清空,其实对数组的操做还有不少方式的,能够看如下截图。
具体的每个的操做方法,能够去国内的w3s多学习下。
www.w3school.com.cn/jsref/jsref…
demo地址:
github.com/bluefox1688…
最近你们对微信小程序开发热情大涨,结识了很多对微信小程序技术开发的牛人,也有一些刚入行的新手,特此我创建了一个微信小程序技术交流圈子,但愿给大伙有一个纯洁的技术交流圈子,技术交流,提高自我。咱们也会不按期发布一些微信小程序的学习教程。
此群的目标为纯(干)纯(货)的技术交流群,不死于广告之中,已开启了群主邀请确认机制,须要入群的小伙伴,请加个人我的微信amwhuang
。(备注:小程序入群)
文章首发地址:
数组操做--微信小程序学习教程
lanchenglv.com/article/201…如需转载,请标明转载出处,谢谢。