微信小程序开发相关记录(2017.07.25)

简介: 1、底部的tabBar可设置的属性有color、selectedColor、borderStyle、backgroundColor、list至少2个,最多5个(其属性有pagePath、te...

1、底部的tabBar

可设置的属性有color、selectedColor、borderStyle、backgroundColor、list至少2个,最多5个(其属性有pagePath、text、iconPath、selectedIconPath等)

"tabBar": {
    "color":"#dddddd",
    "selectedColor":"#3cc51f",
    "borderStyle":"black",
    "backgroundColor":"#2B2B2B",
    "list": [
      {
        "pagePath": "pages/movie/movie",
        "text": "影院热映",
        "iconPath": "assets/img/dy-1.png",
        "selectedIconPath": "assets/img/dy.png"
      },
      {
        "pagePath": "pages/recommend/recommend",
        "text": "电影推荐",
        "iconPath": "assets/img/tj-1.png",
        "selectedIconPath": "assets/img/tj.png"
      },
      {
        "pagePath": "pages/search/search",
        "text": "查询电影",
        "iconPath": "assets/img/search-1.png",
        "selectedIconPath": "assets/img/search.png"
      }
    ]
  },


效果如下图所示:



2、滑块视图容器swiper

swiper

滑块视图容器。

属性名 类型 默认值 说明 最低版本
indicator-dots Boolean false 是否显示面板指示点
indicator-color Color rgba(0, 0, 0, .3) 指示点颜色 1.1.0
indicator-active-color Color #000000 当前选中的指示点颜色 1.1.0
autoplay Boolean false 是否自动切换
current Number 0 当前所在页面的 index
interval Number 5000 自动切换时间间隔
duration Number 500 滑动动画时长
circular Boolean false 是否采用衔接滑动
vertical Boolean false 滑动方向是否为纵向
bindchange EventHandle
current 改变时会触发 change 事件,event.detail = {current: current, source: source}

从公共库v1.4.0开始,change事件返回detail中包含一个source字段,表示导致变更的原因,可能值如下:

  • autoplay 自动播放导致swiper变化;
  • touch 用户划动引起swiper变化;
  • 其他原因将用空字符串表示。

注意:其中只可放置<swiper-item/>组件,否则会导致未定义的行为。

swiper-item

仅可放置在<swiper/>组件中,宽高自动设置为100%。

示例代码:

<swiper indicator-dots="{{indicatorDots}}"
  autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">
  <block wx:for="{{imgUrls}}">
    <swiper-item>
      <image src="{{item}}" class="slide-image" width="355" height="150"/>
    </swiper-item>
  </block>
</swiper>
<button bindtap="changeIndicatorDots"> indicator-dots </button>
<button bindtap="changeAutoplay"> autoplay </button>
<slider bindchange="intervalChange" show-value min="500" max="2000"/> interval
<slider bindchange="durationChange" show-value min="1000" max="10000"/> duration
Page({
  data: {
    imgUrls: [
      'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg',
      'http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg',
      'http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg'
    ],
    indicatorDots: false,
    autoplay: false,
    interval: 5000,
    duration: 1000
  },
  changeIndicatorDots: function(e) {
    this.setData({
      indicatorDots: !this.data.indicatorDots
    })
  },
  changeAutoplay: function(e) {
    this.setData({
      autoplay: !this.data.autoplay
    })
  },
  intervalChange: function(e) {
    this.setData({
      interval: e.detail.value
    })
  },
  durationChange: function(e) {
    this.setData({
      duration: e.detail.value
    })
  }
})



效果如下图所示:



3、豆瓣API

在浏览器中输入豆瓣电影接口地址

http://api.douban.com/v2/movie/in_theaters

然后F12,打开调试窗口,选择Console,输入var a=接口返回的json串,如下图所示:


然后回车,再输入a,再回车,即可看到已经格式化的JSON对象,如下图所示:



3、从接口获取数据进行绑定


<block wx:for="{{movies}}">
    <view class="movie">
      <view class="pic">
        <image mode="aspectFit" src="{{item.images.medium}}"></image>
      </view>
      <view class="movie-info">
        <view class="base-info">
          <text>{{item.text}}</text>
        </view>
      </view>
    </view>
    <view class="hr"></view>
  </block>


// pages/movie/movie.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    imgUrls: [
      '../../assets/img/001.jpg',
      '../../assets/img/002.jpg',
      '../../assets/img/003.jpg'
    ],
    indicatorDots: true,
    autoplay: true,
    interval: 3000,
    duration: 1000,
    movies:[],
    hidden:false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
      this.loadMovie();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  /**
   * 加载电影
   */
  loadMovie:function(){
    var page = this;
    wx.request({
      url: 'http://api.douban.com/v2/movie/in_theaters',
      header:{
        'Content-Type':"application/json"
      },
      success:function(res){
      var subjects = res.data.subjects;
      processSubjects(subjects);
      page.setData({ movies: subjects, hidden:true});
      }
    })
  },
  /**
   * 
   */
  processSubjects: function (subjects) {
      //循环
    for (var i = 0; i < subjects.length;i++){
      var subject = subjects[i];
      this.processSubject(subject);
      }
  },
  /**
   * 
   */
  processSubject:function(subject){
      //名称
      var title = subject.title;
      //导演
      var directors  = subject.directors;
      var directorStr = "";
      for (var index in directors){
        directorStr= directorStr+directors[index].name+" / ";
      }
      if(directorStr!=""){
        directorStr = directorStr.substring(0,directorStr.length-2);
      }
      //主演
      var casts = subject.casts;
      var castStr = "";
      for(var index in casts){
        castStr= castStr+casts[index].name+" / ";
      }
      if(castStr!=""){
        castStr= castStr.substring(0,castStr.length-2);
      }
      //类型
      var genres = subject.genres;
      var genresStr = "";
      for(var index in genres){
        genresStr = genresStr+genres[index]+" / ";
      }
      if(genresStr!=""){
        genresStr= genresStr.substring(0,genresStr.length-2);
      }
      //年份
      var year = subject.year;
      //拼接字符串
      var text = "名称:"+title+"\n导演:"+directorStr+"\n主演:"+castStr+"\n类型:"+genresStr+"\n上映年份:"+year;
      subject.text = text;
  }

})


4、加载进度条


<view class="body-view">
  <loading hidden="{{hidden}}" bindchange="loadingChange">
    加载中...
  </loading>
</view>

data: {
    imgUrls: [
      '../../assets/img/001.jpg',
      '../../assets/img/002.jpg',
      '../../assets/img/003.jpg'
    ],
    indicatorDots: true,
    autoplay: true,
    interval: 3000,
    duration: 1000,
    movies:[],
    hidden:false
  },

/**
   * 加载电影
   */
  loadMovie:function(){
    var page = this;
    wx.request({
      url: 'https://api.douban.com/v2/movie/in_theaters',
      header:{
        'Content-Type':"application/json"
      },
      success:function(res){
      var subjects = res.data.subjects;
      processSubjects(subjects);
      page.setData({ movies: subjects, hidden:true});
      }
    })
  },

5、如果出现请求的URL地址不在合法域名列表中的话,会出现如下问题:



  • 解决方案:打开小程序微信公众平台设置小程序开发设置,配置服务器合法域名(必须是https),如下图所示:






相关文章
|
22天前
|
小程序 JavaScript
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
本文介绍了使用 Taro 和 Vue 创建轮播组件的两种方法:一是通过 `&lt;swiper&gt;` 实现,二是利用 Nut UI 的 `&lt;nut-swiper&gt;` 组件实现。
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
|
7天前
|
存储 移动开发 监控
微信支付开发避坑指南
【9月更文挑战第11天】在进行微信支付开发时,需遵循官方文档,确保权限和参数配置正确。开发中应注重安全,验证用户输入,合理安排接口调用顺序,并处理异常。上线后需实时监控支付状态,定期检查配置,关注安全更新,确保系统稳定运行。
|
13天前
|
移动开发 小程序 JavaScript
uni-app开发微信小程序
本文详细介绍如何使用 uni-app 开发微信小程序,涵盖需求分析、架构思路及实施方案。主要功能包括用户登录、商品列表展示、商品详情、购物车及订单管理。技术栈采用 uni-app、uView UI 和 RESTful API。文章通过具体示例代码展示了从初始化项目、配置全局样式到实现各页面组件及 API 接口的全过程,并提供了完整的文件结构和配置文件示例。此外,还介绍了微信授权登录及后端接口模拟方法,确保项目的稳定性和安全性。通过本教程,读者可快速掌握使用 uni-app 开发微信小程序的方法。
39 3
|
22天前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
本文介绍了Taro中`useShareAppMessage`的使用方法,需在页面配置`enableShareAppMessage: true`并重新编译。
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
|
22天前
|
小程序 数据安全/隐私保护
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
在 `src/http` 目录下创建 `request.ts` 文件,并配置 Taro 的网络请求方法 `Taro.request`,支持多种 HTTP 方法并处理数据加密。
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
|
22天前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,上传文件
本文介绍如何在Taro项目中使用Nut UI的`&lt;nut-uploader/&gt;`组件实现图片上传功能,并通过示例代码展示了自定义上传逻辑的方法。
Taro@3.x+Vue@3.x+TS开发微信小程序,上传文件
|
22天前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,根据系统主题展示不同样式(darkMode)
本文介绍如何在Taro项目中配置深色模式。通过在`src/app.config.ts`设置`darkmode`选项和在`theme.json`中定义主题变量,可以实现跟随系统主题的界面风格切换。
Taro@3.x+Vue@3.x+TS开发微信小程序,根据系统主题展示不同样式(darkMode)
|
2天前
|
小程序 前端开发 JavaScript
Java开发工程师转小程序开发的前景如何?
Java开发工程师转小程序开发的前景如何?
13 0
|
12天前
|
小程序 前端开发 JavaScript
开发支付宝小程序的思路
【9月更文挑战第7天】本文介绍了一种在支付宝小程序中实现网页抓取的方法,通过云函数或自建后端服务来解析外部网页的标题、描述和图片。具体步骤包括:用户输入链接,小程序调用云函数抓取并解析网页内容,最后将结果返回并在前端展示。文中详细介绍了使用 Node.js 的云函数实现过程,包括代码示例和小程序前端页面的实现方法。通过这种方式,可以显著提升链接分享的用户体验。
26 0
|
28天前
|
小程序 JavaScript Java
微信小程序的后端开发需要使用什么语言?
【8月更文挑战第22天】微信小程序的后端开发需要使用什么语言?
259 65