收藏
回答

getApp()的问题

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 需求 getApp() 客户端 6.5.3 2.5.0

- 需求的场景描述(希望解决的问题)



//page.js


let App_Instance = getApp(); //App 实例

let AppData = App_Instance.globalData;
Page({
 
    /**
     * 页面的初始数据
     */
    data: {
 
    },
    //发起授权,只执行一次 重新授权需要引导用户点击设置授权项
    authorization: function () {
        console.log("开始调用Authorization");
        let that = this;
        try{
            let is_scope_userLocation = wx.getStorageSync('is_scope_userLocation');
            if (is_scope_userLocation == true) {
                console.log('Hello ');
                console.log(App_Instance);
                App_Instance.getLatLng();
            } else {
                //发起 预授权
                wx.authorize({
                    scope: 'scope.userLocation',
                    success: function (res) { //同意
                        wx.setStorage({
                            key: 'is_scope_userLocation',
                            data: true,
                        });
                        App_Instance.getLatlng();//直接调用接口
                    },
                    fail: function (res) {
                        console.log("用户拒绝授权");
                        wx.showToast({
                            title: '请手动打开设置',
                            icon: 'loading',
                            duration: 1500
                        })
                    }
                })
            }
 
        }catch(e){
            console.log(e);
        }
 
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
 
    },
 
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {
 
    },
 
    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
        this.authorization(); //进入页面时发起【预】授权
    },
 
    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {
 
    },
 
    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {
 
    },
 
    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {
 
    },
 
    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {
 
    },
 
    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {
 
    }
})



为什么 定义了getLatlng方法 还是显示 类型错误?


- 希望提供的能力



最后一次编辑于  2019-01-21
回答关注问题邀请回答
收藏

3 个回答

  • 羽戈
    羽戈
    2019-01-21

    方法是没问题的。第一次打开  是对的。第二次就提示 类型错误·

    2019-01-21
    有用
    回复
  • 好哇你个狗东西
    好哇你个狗东西
    2019-01-21

    把方法写到globalData里试试....

    2019-01-21
    有用
    回复
  • 2019-01-21

    看下getLatLng方法

    2019-01-21
    有用
    回复 2
    • 羽戈
      羽戈
      2019-01-21
      //【需要授权】获取用户位置经纬度
      getLatlng: function () {
          console.log("call getLatlng Method - 5");
          let that = this;
          wx.getLocation({
              type: 'gcj02',
              success: function (res) {
                  console.log(res);
                  //持久化:当前用户经纬度信息
                  wx.setStorageSync('user_lat',res.latitude);
                  wx.setStorageSync('user_lng', res.longitude);
                  //获取逆地址解析 信息
                  that.reverseGeocoder(res.latitude+','+res.longitude);
                  //获取路线规划
                  //that.getLocationLine();
              },
              fail:function(e){
                  console.log(e);
              }
          })
      },


      2019-01-21
      回复
    • 羽戈
      羽戈
      2019-01-21

      已解决

      只要更换getLatlng的函数名就行了。 我换成getUserLatLng就没问题了··· 可能是重名吧 ···

      2019-01-21
      回复
登录 后发表内容