今天在用真机调试的时候发现
轮播图的图片死活显示不出来
,查了一下网上的结果发现大部分是以下原因导致的:【我这里没显示的原因可能就是因为域名没备案吧,这块还没去验证。模拟器是完全可以显示的。】
图片是用image加载的;
图片的url里面没有中文;
图片的HTTP应为小写的http以及图片的后缀为小写的.png或者.jpg(建议全部为png)
域名已备案;
图片名称没有空格
Swiper
组件实现轮播图
Swiper
组件的官方介绍文档 Swiper---文档末尾有使用案例, 它的作用是 滑块视图容器,是个容器,因此容器中要显示的内容就可以有多种显示方式,可以是图片
,可以是文字
,可以是一个其他view
swiper-item
这是容器中要显示的布局
这里我们是用于显示福利接口中前 5 张图片,所以这里swiper-item
包裹的就是image
组件banner
布局文件如下:
因为需要整体上下滑动,因此用了scroll-view
组件。banner
的实现采用了数据绑定的方式,将swiper 组件
的属性交给js
脚本去控制。同时利用for 循环
将列表数据渲染到页面上,这里还给图片组件image
设置了一个类选择器 slide-image
通过这个类选择器可以在wxss 文件
中设置图片的样式
<scroll-view> <view> <swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}"> <block wx:for="{{banners}}"> <swiper-item> <image class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="{{item.url}}" class="slide-image" catchtap='onBannerItemClick' data-imageUrl='{{item.url}}'/> </swiper-item> </block> </swiper> </view></sroll-view>
设计 wxml
展示图片轮播样式
这里给轮播图的高度设置为
600rpx
,宽度铺满屏幕
swiper{ width: 100%; height: 600rpx; }.slide-image{ width: 100%; height: 600rpx }
获取轮播图网络数据
布局设置好了之后就是获取数据了,这里使用 干货集中营 的数据。这里使用了封装好的网络请求加载库,详细介绍请移步----->微信小程序~ 网络请求工具的封装
1. 引入封装好的网络工具类 var util = require('../../utils/util.js');2. 请求数据 onLoad: function (options) { var bannerUrl = "http://gank.io/api/data/福利/5/1"; util.http(bannerUrl, this.processBannerData); // 设置标题 wx.setNavigationBarTitle({ title: '全部干货' }) }, 3. 处理轮播图数据 processBannerData: function (gankData){ var banners = []; var results = gankData.results; for (var idx in results) { var subject = results[idx]; var url = subject.url; console.log("url-1-->" + url); var tranUrl = url.replace("http://", "https://"); console.log("url-2-->" + tranUrl); var temp = { desc: subject.desc, _id: subject._id, url: tranUrl } banners.push(temp) } // 将数据绑定给变量,供页面调用 this.setData({ banners: banners, indicatorDots: true, autoplay: true, interval: 2500, duration: 1000 }); },
将数据显示到界面上
布局中的变量要和处理数据中的变量一致,否则获取了数据之后页面中也显示不了数据
<view> <swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}"> <block wx:for="{{banners}}"> <swiper-item> <image class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="{{item.url}}" class="slide-image" catchtap='onBannerItemClick' data-imageUrl='{{item.url}}'/> </swiper-item> </block> </swiper> </view>
ok,banner 功能到这里了,点击后查看大图下一篇介绍。
作者:龙衣袭
链接:https://www.jianshu.com/p/2cd19a94801b
共同学习,写下你的评论
评论加载中...
作者其他优质文章