微信小程序滑动菜单(swiper)

在这里插入图片描述
今天教大家写一下滑动菜单
我这里使用的mpvue的写法,基于vue语法开发的小程序框架。

明确思路
1 确定每页所需的数据 这里是10条
2 进行数据截取
3 进行渲染
下面给大家分享下代码 有不明白的可以私信我

1 数据
注意:我是用mpvue 所以数据直接放在了
data(){
return{
}
} 里

type: [
        {
          id: 0,
          name: '餐饮'
        },
        {
          id: 1,
          name: '零食烟酒'
        },
        {
          id: 2,
          name: '购物'
        },
        {
          id: 3,
          name: '住房'
        },
        {
          id: 4,
          name: '交通'
        },
        {
          id: 5,
          name: '娱乐'
        },
        {
          id: 6,
          name: '汽车'
        },
        {
          id: 7,
          name: '通讯'
        },
        {
          id: 8,
          name: '育儿'
        },
        {
          id: 9,
          name: '人情'
        },
        {
          id: 10,
          name: '医疗'
        },
        {
          id: 11,
          name: '旅行'
        },
        {
          id: 12,
          name: '投资'
        },
        {
          id: 13,
          name: '投资亏损'
        },
        {
          id: 14,
          name: '借出'
        },
        {
          id: 15,
          name: '还债'
        },
        {
          id: 16,
          name: '利息支出'
        },
        {
          id: 17,
          name: '其他'
        }
      ],
      newType: [

      ]

2 封装截取数组的方法

 created () {  // mpvue的create生命周期
    let a = (function (arr, length) { // 形参接收方才传入的值
      var _arr = []   // 定义一个新数组
      while (arr.length) { 循环总数据的长度
        _arr.push(arr.splice(0, length)) // 把截取到的数组push到_arr数组里
      }
      return _arr // 返回新的数组
    })(this.type, 10) // 传两个参数 this.type是所有数据 10是截取的个数 (我们要10条)
    this.newType = a // 新的数组直接赋值给在data里定义的空数组
    console.log(this.newType.length) // 这个length就是页数了
    console.log(this.newType) // 这个就是分好的数组
    // 这个方法的前提是必须掌握 数组的splice方法 就是截取数组 
	 [splice方法](http://www.w3school.com.cn/jsref/jsref_splice.asp)
  }

console.log(this.newType.length) // 这个length就是页数了
console.log(this.newType) // 这个就是分好的数组
在这里插入图片描述
3 渲染

<swiper class="swiper" indicator-dots="true" autoplay="true" interval="5000" duration="1000">
	<block v-for="(item, index) in newType" :index="index" :key="key">
		<swiper-item class='swiper_item'>
			<div class='type_item' v-for="(v, i) in item" :index="i" :key="key"> 
				{{v.name}}
			</div>
		</swiper-item>
	</block>
</swiper>

简单来说就是
假如我有18条数据
那么我每个页面需要10条
又因为 一个页面是一个swiper-item 所以需要知道循环出两个swiper-item 这个咋们已近实现了
接着一个swiper-item里有10条 那么就必须要一个长度为10的数组 这个咋们刚才已经打印到了
咋们根据总数据截取除了两个数组 一个长度为10 一个为8 所以就有两个页面 第一个页是10条 第二个也就是8条
这时 你再去把总数=数据多加几条 页就会自己叠加…

看不懂的话去小程序官网看看这个swiper组件 是什么?

好了 就这样


版权声明:本文为qq_41595212原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。