2018-10-16 17:59:34 henryhu712 阅读数 1374
  • 微信公众号开发5-自定义菜单-微信开发php

    微信公众平台开发之自定义菜单管理是子恒老师《微信公众平台开发》视频教程的第5部。详细讲解了用php开发微信,对微信公众平台中的自定义管理开发。内容包含微信添加菜单,获取自定义菜单配置,删除菜单等等。欢迎反馈,微信/QQ:68183131

    5667 人正在学习 去看看 秦子恒

有时我们会在 app.js 中定义全局变量,这样其他页面可以共享信息。那在调试的时候,如何在微信开发者工具中查看这些信息?答案是在 console 面板中使用 getApp():

在这里插入图片描述

2018-02-28 10:58:31 LVXIANGAN 阅读数 465
  • 微信公众号开发5-自定义菜单-微信开发php

    微信公众平台开发之自定义菜单管理是子恒老师《微信公众平台开发》视频教程的第5部。详细讲解了用php开发微信,对微信公众平台中的自定义管理开发。内容包含微信添加菜单,获取自定义菜单配置,删除菜单等等。欢迎反馈,微信/QQ:68183131

    5667 人正在学习 去看看 秦子恒
总结:
1、使用var不在乎作用域,
2、使用let只在当前作用域有效,
3、还是分不清,统一用var。


var用于全局变量或者函数变量。
let用于块级{ }的变量。

例如:
 while(1) {
   let let1 = 2;
   var var1 = 2;
 }
 alert(let1); //不可访问
 alert(var1); //可以访问

var num = 1 和 num = 1 的区别
var num = 1:在当前域中声明变量。

num = 1:先在当前作用域(如在方法中声明,则作用域包括全局作用域和方法局部作用域)中寻找num; 如果找到会执行赋值操作; 如果没有,会创建一个全局对象并赋值。



2018-04-12 09:38:53 m0_38082783 阅读数 14383
  • 微信公众号开发5-自定义菜单-微信开发php

    微信公众平台开发之自定义菜单管理是子恒老师《微信公众平台开发》视频教程的第5部。详细讲解了用php开发微信,对微信公众平台中的自定义管理开发。内容包含微信添加菜单,获取自定义菜单配置,删除菜单等等。欢迎反馈,微信/QQ:68183131

    5667 人正在学习 去看看 秦子恒

WXRUI体验二维码

WXRUI体验码

如果文章对你有帮助的话,请打开微信扫一下二维码,点击一下广告,支持一下作者!谢谢!

全局变量的作用

在微信小程序开发中,会遇到一个很实际的应用场景,就是一个变量会在多个页面进行使用。


例如:

  1. 在微信小程序开发中使用高德地图的微信小程序开发,其中key值就需要在多个页面使用;
  2. 在微信小程序开发电商平台时同样,比如客服电话,就需要在多个页面使用。

在以上两种类似的场景中,开发者就需要使用全局变量,当然也有开发者说不能每个page页面都定义一个?如果客服电话改变,如果客服要求采用他的高德key,这个时候只需要修改全局,就能进行整个小程序的修改,如果每个page一个变量,将会在修改中花费大量的时间做低效的工作。所以可以看出全局变量在这里的作用就是提高开发效率!

如何定义全局变量

方法一:用APP定义全局变量

在app.js中的APP({})传入对象中定义一个全局属性globalData,作为保存全局变量的对象。

示例代码:

声明变量进行引入!


// 引入高德地图js
const amap = require('./src/js/amap-wx.js');
// 引入接口js
const urlList = require('./src/js/config.js');
// 引入wetoast插件js
const { WeToast } = require('./src/wetoast/wetoast.js');
// 全局变量高德地图key
const key = 'c290b7e016c85e8f279b2f80018c';
// 全局变量服务电话
const phone = '400-007-859';

进行全局变量的赋值!


App({
  globalData: {//全局变量
    amap: amap,
    key: key,
    phone: phone,
    urlList: urlList.urlList
  }
})

方法一全局变量的使用:


//在page页面引入app,同时声明变量,获得所需要的全局变量
const app = getApp();
const urlList = app.globalData.urlList;

方法二:用引入js的方法定义全局变量

在公用js文件夹中创建一个保存全局变量的js文件


实例:我在公用文件夹src下的js文件夹中创建的三个保存全局变量的文件:base64.js、config.js、data.js
创建全局变量js的位置
这三个文件作用:

  1. base64.js保存背景图标转化的base64码
  2. config.js保存request请求数据的路径
  3. data.js 保存初次开发的模拟数据

示例代码:

let basePath = 'https://xxxxx.com';
let urlList = {
    goodsListUrl: basePath + '/goodsList',
    shopCartUrl: basePath + '/shopCart',
    ...
}
module.exports = {
  urlList: urlList
}

使用方法:

// 引入接口js
const urlList = require('./src/js/config.js');
wx.request({
    url: urlList.urlList.goodsListUrl,
    data: {},
    success: res => {}
})

总结

其实两种方法都可以定义全局变量,那么在什么时候采用哪一种方法?我个人建议,在像高德地图的key值这种只需要单独定义的,可以采用方法一,方便、简洁、不用单独创建文件。在请求地址这种批量全局变量的定义时,采用方法二,有利于后期的查找和修改。两种方法结合,更有利于开发!

WXRUI体验二维码

WXRUI体验码

如果文章对你有帮助的话,请打开微信扫一下二维码,点击一下广告,支持一下作者!谢谢!

DEMO下载

我的博客,欢迎交流!

我的CSDN博客,欢迎交流!

微信小程序专栏

前端笔记专栏

微信小程序实现部分高德地图功能的DEMO下载

微信小程序实现MUI的部分效果的DEMO下载

微信小程序实现MUI的GIT项目地址

微信小程序实例列表

前端笔记列表

游戏列表

2016-09-14 18:03:32 kirsten_z 阅读数 138
  • 微信公众号开发5-自定义菜单-微信开发php

    微信公众平台开发之自定义菜单管理是子恒老师《微信公众平台开发》视频教程的第5部。详细讲解了用php开发微信,对微信公众平台中的自定义管理开发。内容包含微信添加菜单,获取自定义菜单配置,删除菜单等等。欢迎反馈,微信/QQ:68183131

    5667 人正在学习 去看看 秦子恒

1、android 和 iphone 区别

1)进入多层页面后,返回前一页​

微信开发 =》点击自定义菜单 =》腾讯授权返回code码=》判定后进入目标页面

通过腾讯授权获取的code一次有效​,iphone点击左上角返回按钮,重新载入前一个页面,code码是失效,报错

这里写图片描述

​解决方式:

设置session:将需要判定的变量,在第一次进入目标页面时,​保存在session里,下次重载如该页面时,判定session

use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Redirect;

class SignController extends BaseController
{
    public function getIndex()
    {
        //判断weixin_id的来源,获取weixin_id
        if(Session::has('openid')){
            $weixin_id = Session::get('openid');
        }elseif(isset($_GET["code"])){
            $weixin_id = getOpenId($_GET["code"]);
            //设置session记录weixin_id
            Session::put('openid', $weixin_id);
        }
        //判断微信id是否合法
        if(!$info=checkUserLegal($weixin_id)){
            $msgcontent="非法访问,请重新进入签到页面!";
            return View::make('front.bind.message')->with('msgcontent', $msgcontent);
            exit;
        }

2)显示日历

iPhone默认,数字可以拨打

解决方式:在现实日历页面添加标签

2、​判定后跳转到目标页面(laravel框架)

​1)点击目标页面入口,先行判定是否绑定账号,若无,则跳转到绑定页面

​return Redirect::to($url); //$url -- 目标页面路径

2)绑定后跳转到目标页面​

控制器层,需要获取目标页面的URL:设置session

Sesssion::put('from', $url);​ //$url -- 目标页面路径

​view层,需要判定是否存在session,获取,跳转

@if(Session::has('from'))​       
    {{Session::forget('from')}}
@endif
//判断是否在签到或订阅页面,若是则绑定后跳转到该页面
if($('#session_val').val()){
    setTimeout(function(){
        window.location.href =$('#session_val').val();
    }, 1000);
}​

setTimeout(callback, time) – 设置在指定时间执行callback方法

3、日期签到,连续签到日期效果显示

1)进入签到页面判定

获取本月已签到日期​,返回值到当前页

2)js判定,ready()方法​,显示效果

$(document).ready(function(e) {   
   //显示当前月份签到情况
   if($("#singed_days").val()){
       var days_arr = $("#singed_days").val().split(",");
       for(var i in days_arr){
          var select = "#fc-" + days_arr[i];
          $(select).parent().addClass("current_day");
       }
    }
});

var arr = val.split(“,”) ​将val值拆分成用 , 隔开的字符串数组arr
​for(var i in days_arr){} 循环判定相应键值i是否存在在arr中,并逐一进行相应处理

4、​环境配置问题

不同环境配置​不同,导致一些语法书写方法失效

php 高版本支持 数组语法 $arr = [ 1, 3, 4];

php 5.3以下不支持上面写法 ,支持 $arr = array(1, 3, 4);​

5、微信测试发布注意项

1)外网域名 是否正确 config里
2)APPID APPSECRET 是否正确 (微信公众号正式的)
3)​access_token 是否正确,是否有效

2019-04-23 16:31:00 A1344714150 阅读数 2213
  • 微信公众号开发5-自定义菜单-微信开发php

    微信公众平台开发之自定义菜单管理是子恒老师《微信公众平台开发》视频教程的第5部。详细讲解了用php开发微信,对微信公众平台中的自定义管理开发。内容包含微信添加菜单,获取自定义菜单配置,删除菜单等等。欢迎反馈,微信/QQ:68183131

    5667 人正在学习 去看看 秦子恒

 data中设置了数据,但微信小程序控制台一直提示变量未定义,js代码如下


  data: {
    foodList: wx.getStorageSync('foodList'),
    chooseFiles: []
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var foodIndex = options.foodIndex;
    this.setData({
      foodIndex : foodIndex,
      chooseFiles: foodList[foodIndex].foodUrl
    });
  },

 

 后来发现是个低级错误,需要先在变量前加this.data,改正后如下:

  data: {
    foodList: wx.getStorageSync('foodList'),
    chooseFiles: []
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var foodIndex = options.foodIndex;
    this.setData({
      foodIndex : foodIndex,
      chooseFiles: this.data.foodList[foodIndex].foodUrl
    });
  },

 

问题解决。 

没有更多推荐了,返回首页