`

微信小程序值找不到 传参没有数据undefined 使用onfire

 
阅读更多
1.data-questionId的驼峰式命名是不行的必须小写

2.没有设置的合法域名去请求数据也会影响

//当时的app.js
import oData from './utils/network.js'
import Storage from './utils/storage.js'
const store = new Storage(wx);
const regeneratorRuntime = require('./utils/libs/regenerator-runtime/runtime-module.js')
App({
  onLaunch: function() {
   
    // 扩展js方法
    this.globalExpansion()

    // 判断设备是否为 iPhone X
    this.checkIsIPhoneX()

    const res = wx.getSystemInfoSync()
    this.globalData.SystemInfo = res
    console.log('onLaunch')
  },

  App_load: async function() {
    let loaded = false
    let user = await this.UserLogin()
    if (user.data) {
      this.globalData.partyId = user.data.partyId
      this.globalData.userTenantId = user.data.userTenantId
      await this.getStoreMessage()
      loaded = true
    } else {
      loaded = false
    }
    return loaded
  },

  globalExpansion: function() {
    Array.prototype.equals = function (arr) {
      return this.sort().join() === arr.sort().join()
    }
    Date.prototype.Format = function (fmt) { //author: meizz
      var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
      };
      if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
      for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
      return fmt;
    }
  },
  checkIsIPhoneX: function () {
    const self = this
    wx.getSystemInfo({
      success: function (res) {
        // 根据 model 进行判断
        if (res.model.search('iPhone X') != -1) {
          self.globalData.isIPX = true
        }
        // 或者根据 screenHeight 进行判断
        // if (res.screenHeight == 812) {
        //   self.globalData.isIPX = true
        // }
      }
    })
  },
  getStoreMessage: async function() {
    let productStoreId = '10000'
    let options = {
      path: 'ProductStores',
      parameters: {
        $filter: `productStoreId eq '${productStoreId}'`,
      }
    }
    await oData.read(options).then(res =>{
      if (res.data.value && res.data.value instanceof Array && res.data.value.length > 0) {
        this.globalData.storeObject = res.data.value[0]
      }
    })
  },
  getSessionKey: function () {
    return new Promise((resolve, reject) => {
      let webSiteId = this.globalData.webSiteId
      // 检查Session是否过期
      wx.checkSession({
        //session_key 未过期,并且在本生命周期一直有效
        success: () => {
          let openid = store.get('openid')
          if (openid) {
            resolve(openid)
          } else {
            // 重新登录
            wx.login({
              success: (res) => {
                if (res.code) {
                  //发起网络请求
                  let options = {
                    path: 'getWxMiniprogramUserId',
                    method: 'POST',
                    body: {
                      'code': `${res.code}`,
                      'webSiteId': `${webSiteId}`
                    }
                  }
                  oData.submit(options).then(res => {
                    if (res.value) {
                      let openid = res.value
                      store.set('openid', openid)
                      resolve(openid)
                    } else {
                      resolve(false)
                    }
                  })
                } else {
                  resolve(false)
                  console.log('登录失败!' + res.errMsg)
                }
              }
            })
          }
        },
        fail: () => {
          // session_key 已经失效,需要重新执行登录流程
          //重新登录
          wx.login({
            success: (res) => {
              if (res.code) {
                //发起网络请求
                let options = {
                  path: 'getWxMiniprogramUserId',
                  method: 'POST',
                  body: {
                    'code': `${res.code}`,
                    'webSiteId': `${webSiteId}`
                  }
                }
                oData.submit(options).then(res => {
                  if (res.data.value) {
                    let openid = res.data.value
                    store.set('openid', openid)
                    resolve(openid)
                  } else {
                    resolve(false)
                  }
                })
              } else {
                resolve(false)
                console.log('登录失败!' + res.errMsg)
              }
            }
          })
        }
      })
    })

  },
  GlobalRequest: async (option) => {
    let res = await new Promise((resolve, reject) => {
      wx.request({
        url: option.url,
        data: option.data || {},
        method: option.method || 'GET',
        success: (res) => {
          resolve(res)
        },
        fail: (res) => {
          reject(res)
        },
        complete: (res) => {

        }
      })
    })
    return res
  },
  UserLogin: async function() {
    let openid = ''
    await this.getSessionKey().then(res => {
      openid = res
    })
    let user = ''
    if (openid) {
      let option = {
        url: 'https://https://www.cloudlakenet.com?openId=' + openid
      }
      await this.GlobalRequest(option).then(res => {
        if (res.statusCode === 200 || res.statusCode === 204) {
          let cookies = res.header['Set-Cookie'].split(';')
          let set_cookies = res.header['Set-Cookie']
          store.set('x-cookie', set_cookies)
        }
        user = res
      })
    }
    return user
  },
  globalData: {
    regeneratorRuntime: regeneratorRuntime,
    SystemInfo: '',
    userInfo: null,
    USERNAME: 'posm2',
    PASSWORD: 'ofbiz',
    prodCatalogId: 'MPTC',
    productStoreId: '10000',
    webSiteId: 'ECX-01',
    isIPX: false, // 当前设备是否为 iPhone X
    storeObject: null,
    partyId: null,
    UomObj: {
      'CNY': '¥'
    },
    requestUri: 'TestAppOdataServlet',
    timeOut: 120,
    authorizedFlag: false,
    baseColor: '#0078c8',
    shoppingCartObject: null,
    userTenantId: null,
  }

})









另外可以使用onfire方法传值
通过onfire.js为来实现这个效果
onfire.js的下载地址https://github.com/hustcc/onfire.js

使用思路:

A 页面先订阅一个事件,并定义处理方法;
从 B 页面返回时,发送消息;
A 页面卸载时,解除订阅。

方式:
var onfire = require("../utils/onfire.js");
var that;
var eventObj = onfire.on('key', function () {
    // 当消息被传递时,做具体的事
});
Page({
  data: {
  },
  onLoad: function(options) {
    // Do some initialize when page load.
  },
  onReady: function() {
    // Do something when page ready.
  },
  onUnload: function (e) {
    onfire.un('key');
    onfire.un(eventObj);//移除
  }
var eventObj = onfire.on('key', function (data){
  // 执行操作
})
})
分享到:
评论

相关推荐

    微信小程序 影音娱乐 找电影视频小程序 (源代码+截图)

    微信小程序 影音娱乐 找电影视频小程序 (源代码+截图)微信小程序 影音娱乐 找电影视频小程序 (源代码+截图)微信小程序 影音娱乐 找电影视频小程序 (源代码+截图)微信小程序 影音娱乐 找电影视频小程序 (源...

    【微信小程序-毕设期末大作业】源码电商类微信小程序

    【微信小程序-毕设期末大作业】源码电商类微信小程序 【微信小程序-毕设期末大作业】源码电商类微信小程序【微信小程序-毕设期末大作业】源码电商类微信小程序【微信小程序-毕设期末大作业】源码电商类微信小程序...

    【微信小程序-毕设期末大作业】微信小程序源码小熊的日记.zip

    【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大...

    微信小程序 商城 (源码)

    微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)...

    微信小程序商城系统源码

    微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)微信小程序 商城 (源码)...

    【微信小程序-毕设期末大作业】记账本微信小程序源码.zip

    【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大...

    微信小程序与插件传参交互完整demo

    在微信小程序中,我们经常需要与外部组件或者插件进行数据交互,以实现更丰富的功能。本教程将深入讲解如何在微信小程序中实现与插件的参数传递和交互,以一个完整的demo为例进行说明。 首先,我们需要理解微信小...

    房贷计算器微信小程序,可搭建使用

    房贷计算器微信小程序,可搭建使用,房贷计算器微信小程序,可搭建使用,房贷计算器微信小程序,可搭建使用,房贷计算器微信小程序,可搭建使用,房贷计算器微信小程序,可搭建使用,房贷计算器微信小程序,可搭建...

    【微信小程序-毕设期末大作业】电影推荐微信小程序源码.zip

    【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大...

    微信小程序 电影推荐 (源码)

    微信小程序 电影推荐 (源码)微信小程序 电影推荐 (源码)微信小程序 电影推荐 (源码)微信小程序 电影推荐 (源码)微信小程序 电影推荐 (源码)微信小程序 电影推荐 (源码)微信小程序 电影推荐 (源码)微信小程序 电影...

    微信小程序php后台内嵌mysql

    微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台内嵌mysql微信小程序php后台...

    【微信小程序-毕设期末大作业】音乐播放器微信小程序源码.zip

    【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大...

    微信小程序源码-户外旅游小程序.zip

    微信小程序源码-户外旅游小程序.zip微信小程序源码-户外旅游小程序.zip微信小程序源码-户外旅游小程序.zip微信小程序源码-户外旅游小程序.zip微信小程序源码-户外旅游小程序.zip微信小程序源码-户外旅游小程序.zip...

    【微信小程序-毕设期末大作业】仿网易云音乐微信小程序源码.zip

    【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大作业】微信小程序源码 【微信小程序-毕设期末大...

    微信小程序 天气预报 (源码)

    微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气...

    微信小程序 健康菜谱 (源码)

    微信小程序 健康菜谱 (源码)微信小程序 健康菜谱 (源码)微信小程序 健康菜谱 (源码)微信小程序 健康菜谱 (源码)微信小程序 健康菜谱 (源码)微信小程序 健康菜谱 (源码)微信小程序 健康菜谱 (源码)微信小程序 健康...

    微信小程序 图书管理系统 (源码)

    微信小程序 图书管理系统 (源码)微信小程序 图书管理系统 (源码)微信小程序 图书管理系统 (源码)微信小程序 图书管理系统 (源码)微信小程序 图书管理系统 (源码)微信小程序 图书管理系统 (源码)微信小程序 图书管理...

    微信小程序商城项目源码.zip

    微信小程序商城项目源码 微信小程序商城项目源码 微信小程序商城项目源码 微信小程序商城项目源码 微信小程序商城项目源码 微信小程序商城项目源码 微信小程序商城项目源码 微信小程序商城项目源码 ...

    微信小程序开发:request请求后台获取不到data解决方法

    原因是post传递的data是json格式而不是key,value的格式,所以获取不到相应的data就是post请求应为表单模式的data,微信小程序提供的datajson格式完全获取不到。 解决方法: 1.改变header header: { 'Content-Type':...

    电子名片微信小程序源码.zip

    电子名片微信小程序源码 电子名片微信小程序源码 电子名片微信小程序源码 电子名片微信小程序源码 电子名片微信小程序源码 电子名片微信小程序源码 电子名片微信小程序源码 电子名片微信小程序...

Global site tag (gtag.js) - Google Analytics