周报 第五期

2019-08-18  本文已影响0人  水水壶

这周还是在开发自己的小程序。

怎么获取 openid

之前是通过云函数获取的 openid,现在是通过服务端去获取 openid

image.png
首先我们要在 onLoad里通过wx.login() 获取 code (用户登录的唯一标识码,每次登录会自动生成一个标识码包括每次用同一个微信登录也会自动生成不一样的code),其次我们要通过wx.request() 向服务端发送请求并把 code 发送过去,然后在服务端把 code appid 和 appsecret 向微信接口服务发送请求,最后微信接口服务会返回 openid(同一个微信登录的唯一标识)
// 小程序端
onLoad: function (e) {
    var that = this
  wx.login({
  success (res) {
    if (res.code) {
      //发起网络请求
      wx.request({
        url: http://localhost:3000/user', 
        data: {
          code: res.code
        }
      })
    } else {
      console.log('登录失败!' + res.errMsg)
    }
  }
})
  },

// 小程序服务端
getUser: async function (req, res) {
        // 根据code拿到openid 
        const { code } = req.query
        const appId = 'wx4aeae26913572966'
        const appSecret = '******************'
        // 向微信接口服务发送请求 
        const url = `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${appSecret}&js_code=${code}&grant_type=authorization_code`
 
        const wxResult = await axios.get(url)
        const { openid } = wxResult.data  // 拿到 openid
}

在小程序里怎么把一个页面data里面属性和值 在第二个页面去使用

找到跳转页面的点解事件在发送请求的时候把需要的变量拼接在 url 里传过去

handleChangedetail: function () {
    var that = this
    wx.navigateTo({
      url: `../detail/detail?userid=${that.data.userId}&cashbookid=${that.data.cashbooksId}&ueravatar=${that.data.userUrl}`
    })
  },

在小程序里给方法传参

data-type=" pay " 在方法里用event.target.dataset.type ` 获取值

<button  bindtap="ChangeType"  data-type = "pay">
JS

ChangeType: function (event) {
    var type = event.target.dataset.type
}

微信小程序怎么当点击按钮渲染区域并改变样式

<button  bindtap="ChangeType"  data-type = "pay" class="pay {{ type === 'pay' ? 'active-type' : '' }}">支出</button>
<button bindtap="ChangeType" data-type = "income" class="income {{ type === 'income' ? 'active-type' : '' }}">收入
// {{ type === 'income' ? 'active-type' : ''  当 type = 'income' css 样式为 active-type,当   type 不等于 'income'  css 样式为 空

css 
.active-type {
  color:  #009688;
}

js
ChangeType: function (event) {
    var type = event.target.dataset.type 
    var that = this
    if (type == 'pay'){
      that.setData({
        type: 'pay',
      })
    } else{
      that.setData({
        type: 'income'
      })
    }
  },

如何根据实际日期显示日期

其他

getNovelClassify: function () {
    var that = this   // this 在此花括弧里才有用
    
    wx.request({
      url: 'https://novel.dkvirus.top/api/v2/gysw/novel/classify',
      success: function (res) {
        console.log(res)
        that.setData({ novelList: res.data.data })   // 在这里 this 是没有值的,要用外面的 that 
      }
    })
},
import axios from 'axios';
axios
    .get(`http://api.douban.com/v2/movie/in_theaters?apikey=0df993c66c0c636e29ecbb5344252a4a&start=${start}&count=${count}`)
    .then(res => {
        console.log(res)
});
上一篇下一篇

猜你喜欢

热点阅读