小程序案例

fetch.js封装函数

module.exports = (url,type,data)=> {
  return new Promise((resolve,reject)=>{
    wx.request({
      url: `http://bl.7yue.pro/v1/${url}`,
      // url:`https://locally.uleee.com/${url}`,
      header:{
        'content-type':'application/json'
      },
      method:type,
      data:data,
      success:resolve,
      fail:reject
    })
  })
}

index.js点击上下页,切换页面
//index.js

//获取应用实例
const app = getApp()
var local=require("../../utils/mode.js")
const fetch=require("../../utils/fetch.js")
const model = require("../../utils/model.js")
const like = require("../../utils/like.js")
Page({
  data:{
    latest:true,
    first:false,
    likeCount:0,
    likeStatus:false,
  onLoad:function(){
      model.getLatest((data)=>{
        this._getLikeState(data.id,data.type)
        this.setData({
          classic: data
        })
      })
  },
  onLike:function (event) {
    let behavior=event.detail.behavior
    like.likeInfo(behavior, this.data.classic.id, this.data.classic.type)
  },
  onNext:function(){
      let index=this.data.classic.index
      model.getNext(index,(data)=>{
        if(data){
          this.setData({
            classic:data,
            latest: model.isLatest(data.index),
            first: model.isFirst(data.index)
          })
        } else {
          console.log('not more classic')
        }
      })
  },
  onPre:function(){
    let index = this.data.classic.index
    model.getPrevious(index, (data) => {
      this._getLikeState(data.id, data.type)
      if (data) {
        this.setData({
          classic: data,
          latest: model.isLatest(data.index),
          first:model.isFirst(data.index)
        })
      } else {
        console.log('not more classic')
      }
    })
  },
   _getLikeState:function(artID, category) {
    like.getClassicLikeStatus(artID, category, (data) => {
      this.setData({
        likeCount: data.fav_nums,
        likeStatus: data.like_status
      })
    })
  }
})

调用函数,切换页面


const fetch=require ('fetch.js')
const like = require('like.js')
module.exports={
  getLatest(sCallBack){
    let url='classic/latest'
    fetch(url).then((res)=>{
      let data = res.data
        let key=this._fullKey(data.index) 
        wx.setStorageSync(key, data)
        this.setLatest(data.index)
      sCallBack(data)
    }
     )
  },
  setLatest(index){
     wx.setStorageSync('latest',index)
  },
  _getLatestEpsoide() {
    let index = wx.getStorageSync('latest')
    return index
  },
  //判断是否是最新的一个
  isLatest(index){
    let latestKey = this._getLatestEpsoide()
    if(latestKey){
      if(latestKey==index){
       return true
      }
      else {
       return false
      }
    } 
  },
  isFirst(index) {
      if (index==1) {
        return true
      }
    else return false
  },
  //获取key值
 _fullKey(partkey){
   let key='classic-'+partkey
   return key
 },
//得到下一个
getNext(index,sCallBack){
  //回调函数得到本地保存的key值
  this._getClassic(index,'next',sCallBack)
},
  getPrevious(index, sCallBack) {
    //回调函数得到本地保存的key值
    this._getClassic(index,'previous',sCallBack)
  },
//得到本地保存的key值
  _getClassic(index,next_or_previous,sCallBack){
    //需要先获取key值
    let key = next_or_previous == 'next' ? this._fullKey(index + 1) :
      this._fullKey(index - 1)
    //把key值保存到小程序的域当中
    let classic = wx.getStorageSync(key)
    if(!classic){
      //需要先发送请求得到key,然后设置key
      let url = `classic/${index}/${next_or_previous}`
      fetch(url).then((res)=>{
        let data=res.data
        console.log(res)
        let key=this._fullKey(data.index)
        wx.setStorageSync(key, data)
        sCallBack(data)
      })
    } else {
      sCallBack(classic)
    }
  }
}

音乐播放

// components/music/music.js
let beh = require("../behavior.js")
const mus = wx.getBackgroundAudioManager()
Component({
  /**
   * 组件的属性列表
   */
  behaviors: [beh],
  properties: {
    src:String,
    title:String
  },

  /**
   * 组件的初始数据
   */
  data: {
    playing:false,
    pause:'images/waitting.png',
    play:'images/playing.png'
  },
  detached:function(event){
    mus.stop()
  },
  /**
   * 组件的方法列表
   */
  methods: {
    playing:function(){
      //切换图片
      this.setData({
        playing:true
      })
      console.log(this.properties.src)
      mus.src=this.properties.src
      mus.title=this.properties.title
    }
  }
})

index.wxml代码

<!--index.wxml-->
<view>
  <view>
    <view class="header">
      <epsoide index="{{classic.index}}"/>
      <like bind:like="onLike" like="{{likeStatus}}" count="{{likeCount}}"/>
      </view>
    <movie wx:if="{{classic.type==100}}" img="{{classic.image}}" content="{{classic.content}}"/>
    <music wx:if="{{classic.type==200}}" img="{{classic.image}}" content="{{classic.content}}" src="{{classic.url}}" title="{{classic.title}}"/>
  </view>
  <view class="navWrpaper">
      <nav catch:leftHandle="onNext" catch:rightHandle="onPre" title="{{classic.title}}" first="{{first}}" latest="{{latest}}"/>
  </view>
  <swiper indicator-dots="true" class="swiper">
      <swiper-item wx:for="{{swiper}}" wx:key="item">
        <image mode="scaleToFill" src="{{item.imgUrl}}"/>
      </swiper-item>
  </swiper>
</view>
<view class="icon">
<navigator url="/pages/share/share"  class="iconItem" wx:for="{{imgs}}" wx:key="item">
<text>{{item.title}}</text>
</navigator>
<navigator url="/pages/share/share"  class="iconItem" wx:for="{{img}}" wx:key="item">
<image src="{{item.image}}"/>
<text>{{item.title}}</text>
<text>{{item.hint}}</text>
</navigator>
</view>

点击爱心

// components/likes/index.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    like:{
      type:Boolean,
      //boolen默认为false
    },
    count:{
      type:Number
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    yesSrc:'../images/like.png',
    noSrc:'../images/like@dis.png'
  },

  /**
   * 组件的方法列表
   */
  methods: {
    onLike:function(e){
      let like = this.properties.like
      let count = like ? this.properties.count -1:this.properties.count+1
        this.setData({
          like: !like,
          count:count
        })
      let behavior = this.properties.like?'like':'cancel'
      this.triggerEvent('like',{
        behavior:behavior
      },{})
    }
  }
})

在这里插入图片描述在这里插入图片描述在这里插入图片描述函数是自己封装的,可供以后参考。在这个小程序案例中,做的事情主要是缓存数据,封装函数,调用函数,
参考小程序文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值