weex-11-组件slider的使用

本节学习目标

熟练使用slider组件

下面的内容是你必须要掌握的

1.怎么让banner的宽度和屏幕的宽度相等
2.怎么让banner自动轮播和轮播间隔
3.如何添加指示器
4.如何设置指示器的颜色和大小
5.点击轮播图时触发事件
6.检测当前轮播图是那一张

我们首先创建一个slider.vue

68639F77-FD70-46F7-B86E-4F26D7D65586.png

修改app.js 文件的代码

import root from './src/sldier.vue'
root.el = '#root'
export default new Vue(root);

1.创建一个轮播组件,让其宽度和屏幕宽度相等
接下来,创建一个轮播图组件

<template>
<div>
    <slider class="slider">
        <!--在这里面写内容-->
    </slider>
</div>
</template>
<script>
</script>
<style>
.slider{
    width:750px;
    height: 300px;
    background-color: green;
}
</style>

运行后的结果如下


E2473535-B63F-4CD3-828C-7D0A0D1E53BE.png

注意

系统默认使用750px表示屏幕的宽度,这个是一个相对值,系统会根据不同手机的分辨率按照比例自动计算实际的宽度值

接下来我们给其设置几张图片

B8E837D2-D220-4C69-B708-83209E53BEF4.png

代码如下

 <template>
 <div>
    <slider class="slider">
      <image src="https://gd2.alicdn.com/bao/uploaded/i2/T14H1LFwBcXXXXXXXX_!!0-item_pic.jpg" class="image"> </image>
      <image src="https://gd1.alicdn.com/bao/uploaded/i1/TB1PXJCJFXXXXciXFXXXXXXXXXX_!!0-item_pic.jpg" class="image"></image>
      <image src="https://gd3.alicdn.com/bao/uploaded/i3/TB1x6hYLXXXXXazXVXXXXXXXXXX_!!0-item_pic.jpg" class="image"></image>
        <!--在这里面写内容-->
    </slider>
</div>
</template>
<script>
  export default{
  }
</script>
<style>
.slider{
    width:750px;
    height: 300px;
    background-color: green;
}
.image{
    width:750px;
    height: 300px;
}
</style>

从代码中我们可以看到

设置图片地址的方式是我们直接写在标签里面的,但是一般图片地址是要从服务器获取的,显然这样的方式不能满足我们实际开发,接下来我们使用Vue.js 的语法进行变量绑定

格式如下

v-bind:属性='变量'简写:属性=‘变量’

修改后的代码为

<template>
<div>
    <slider class="slider">
      <image :src="src1" class="image"> </image>
      <image :src='src2' class="image"></image>
      <image :src='src3' class="image"></image>
        <!--在这里面写内容-->
    </slider>
</div>
</template>
<script>
export default{
    data(){
        return{
            src1:'https://gd2.alicdn.com/bao/uploaded/i2/T14H1LFwBcXXXXXXXX_!!0-item_pic.jpg',          src2:"https://gd1.alicdn.com/bao/uploaded/i1/TB1PXJCJFXXXXciXFXXXXXXXXXX_!!0-item_pic.jpg",         src3:"https://gd3.alicdn.com/bao/uploaded/i3/TB1x6hYLXXXXXazXVXXXXXXXXXX_!!0-item_pic.jpg" 
        }
    }
}
</script>
<style>
.slider{
    width:750px;
    height: 300px;
    background-color: green;
}
.image{
    width:750px;
    height: 300px;
}
</style>

解释一下:

export default{} 这个代表js输出为一个对象,data(){} 这个是一个函数 这个是js新的语法形式,老语法是data:function(){},当然你也可以使用老语法,weex都是支持的!

对于上面这种写法还是有些笨拙,下面我们使用循环遍历的方式,来渲染我们的数据

看一下列表渲染的语法

v-for="item in array"v-for=(item, index) in array

接下来看我们的代码如何写

<template>
<div>
    <slider class="slider">
      <image :src="src" v-for='src in images' class="image"> </image>
    </slider>
</div>
</template>
<script>
export default{
    data(){
        return{
            images:['https://gd2.alicdn.com/bao/uploaded/i2/T14H1LFwBcXXXXXXXX_!!0-item_pic.jpg',
                    "https://gd1.alicdn.com/bao/uploaded/i1/TB1PXJCJFXXXXciXFXXXXXXXXXX_!!0-item_pic.jpg",
                    "https://gd3.alicdn.com/bao/uploaded/i3/TB1x6hYLXXXXXazXVXXXXXXXXXX_!!0-item_pic.jpg" ]
            
        }
    }
}
</script>
<style>
.slider{
    width:750px;
    height: 300px;
    background-color: green;
}
.image{
    width:750px;
    height: 300px;
}
</style>

注意一点

1.如果你发现自己的图片显示不出来,有可能是你的图片组件没有设置宽和高
2.weex 的图片下载需要自定有原生代码写下载缓冲逻辑,这个我们后面会详细讲解,请先使用预览工具或者我们自己的app扫码查看

2.怎么让banner自动轮播和轮播间隔

<slider class="slider" interval="3000" auto-play="true">

如果想要动态的控制这些参数,可以绑定变量,语法如下

<slider class="slider"  :interval="interval" :auto-play="autoPlay">

export default{
   data(){
    return {
        interval:3000,
       autoPlay:true
    }
  }
}

注意

时间单位为毫秒(ms)

3.指示器

991B9A44-390E-4D41-9E9A-D71F57F84A06.png

一般banner轮播图都有像这样的指示器,下面教大家如何实现这样的效果,weex有个指示器组件<indicator></indicator>

我们只需要将指示器组件放在<slider> 组件内部,注意一定是里面哦,不然没有效果的

<slider class="slider">
      <image :src="src" v-for='src in images' class="image"> </image>
      <indicator class="indicator"></indicator>
</slider>    

还有一点要注意,使用绝对定位设置指示器的位置

.indicator{
    position:absolute;
    left:20px;
    bottom:40px;
    width:100px;
    height: 44px;
}

效果图如下

E05A989B-34A2-4837-BD7C-0961630979DA.png

提醒各位一点

如果你发现手机上的效果和网页上的效果不一致,这个可能是weex框架的问题,请以真机上的效果为准

4.如何设置指示器的颜色和大小

item-color这是指示器没被选中的颜色
item-selected-color设置指示器被选中的颜色
item-size指示器的圆点大小

.indicator{
    position:absolute;
    left:20px;
    bottom:40px;
    width:100px;
    height: 44px;
    item-color:red;
    item-selected-color:green;
    item-size:20px;
}

5.点击轮播图时触发事件

通常我们的banner 点击之后会跳转到一个新的页面,要实现这个功能首先要相应点击效果,并且知道单机的是那一个banner

<template>
  <div>
    <slider class="slider">
      <image :src="src" v-for='(src,index) in images' class="image" @click='click(index)'> </image>
      <indicator class="indicator"></indicator>
    </slider>
  </div>
</template>

我们使用v-for=“(src,index) in images”也将索引值遍历一下,目的是要将index当做参数传递给方法

问题来了,这个方法写在哪里了,Vue给我提供了一个methods对象,让我们把事件方法都写在这个里面,如下

export default{
    data(){
        return{
            images:['https://gd2.alicdn.com/bao/uploaded/i2/T14H1LFwBcXXXXXXXX_!!0-item_pic.jpg',                       "https://gd1.alicdn.com/bao/uploaded/i1/TB1PXJCJFXXXXciXFXXXXXXXXXX_!!0-item_pic.jpg",                  "https://gd3.alicdn.com/bao/uploaded/i3/TB1x6hYLXXXXXazXVXXXXXXXXXX_!!0-item_pic.jpg" ] 
        }
    }
    ,methods:{
        click(e){
            console.log(e)
        }
    }
}

注意data是方法,methods是对象

6.检测当前轮播图是那一张

知道当前banner是那一张,这个需求不是很常用,但是我们还是学习一下

<slider class="slider" interval='1000' auto-play="true" @change="change">
   //同上
<slider>

我们看一下方法如何定义

<script>
var modal = weex.requireModule('modal')
export default{
    data(){
        return{
            images:['https://gd2.alicdn.com/bao/uploaded/i2/T14H1LFwBcXXXXXXXX_!!0-item_pic.jpg',                   "https://gd1.alicdn.com/bao/uploaded/i1/TB1PXJCJFXXXXciXFXXXXXXXXXX_!!0-item_pic.jpg",                  "https://gd3.alicdn.com/bao/uploaded/i3/TB1x6hYLXXXXXazXVXXXXXXXXXX_!!0-item_pic.jpg" ]
        }
    }
    ,methods:{
        click(e){
        },
        change(event){
            modal.toast({message:event.index,duration:1})
        }
    }
}
</script>

有义务提醒一下各位

change(event) event 这个参数,系统会传递给我们定义的函数,我们获取它的一个属性index, 这个就是banner的索引值,有一个坑,先说一下,网页是获取不到这个index值的请使用真机测试

var modal = weex.requireModule('modal') 引入这个模块,可以实现弹窗效果,toast()是它的一个方法,可以实现提示语效果,关于这个模块的使用方法我们后面会讲到,不是本节的主要内容,还有如何自定义模块,之后的文章都会讲到,请继续阅读!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,875评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,569评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,475评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,459评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,537评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,563评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,580评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,326评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,773评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,086评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,252评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,921评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,566评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,190评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,435评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,129评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,125评论 2 352

推荐阅读更多精彩内容