美文网首页小程序开发微信小程序
微信小程序:界面传值、取值

微信小程序:界面传值、取值

作者: 韩发发吖 | 来源:发表于2018-03-15 11:27 被阅读2827次

    小程序界面传值

    父级界面:A界面
    子级界面:B界面

    一、url传值

    详细的配置参数可以查看组件导航:navigator,这里不再做过多的解释。

    1. 正向传值:A界面 -->B界面

    用 navigator标签或 wx.navigator传值,A界面向B界面传id值

    A界面获取id值传向B界面如果需要传多个参数, 用 & 链接即可

        // 方法一:navigator标签传值
        <navigator url="/page/index/index?id=110" >传值</navigator>
        <navigator url="/page/index/index?id=110&username=jane&password=123456" >传值</navigator>
    
        // 方法二: wx.navigator标签传值单值、多值传递
        wx.navigateTo({
          url: '/page/index/index?id=' + id
        })
        
        wx.navigateTo({
          url: '/page/index/index?id=' + id +'&username='+ username+'&password='+ password
        })
       
    

    B界面接受id值

      /**
      * 生命周期函数--监听页面加载
      */
      onLoad: function (options) {
        var id = options.id;
        this.setData({
          id:id,
          username:username,
          password:password,
        })
      },
    
    1. 反向传值:B界面 -->A界面

    在B界面需要传值地方代码如下

        var pages = getCurrentPages() // 获取栈中全部界面的, 然后把数据写入相应界面
        var currentPage  = pages[pages.length - 1]  //当前界面
        var prePage = pages[pages.length - 2]  //上一个界面
        var that = this
        prePage.setData({
         id: that.data.id,
        })
    

    在A界面需要接受B界面传过来值码如下:这里要在onShow方法里面重新调用你的数据请求或是,为了验证是否传值成功,你可以打印验证 注:由于你从B界面返回A界面使用了wx.navigateBack,所以当你回到A界面后onLoad、onReady方法不响应,onShow方法响应,所以这里你需要特别注意--生命周期

        /**
        * 生命周期函数--监听页面显示
        */
        onShow: function () {
          //获取数据 
          this.gainData() 
          // 打印你的传值
          console.log("res==", this.data.res)
        },
    

    二、本地储存 tips:本地数据存储的大小限制为 10MB

    每个微信小程序都可能用到本地缓存数据,这里我们可以通过调用微信提供的方法:wx.setStorage、wx.setStorageSync、wx.getStorage、wx.getStorageSync、wx.clearStorage、wx.clearStorageSync、实现对数据本地缓存、获取、清除。可参考微信小程序【数据缓存】开发文档,查看详情。

    在A界面获取数据并缓存到本地

    wx.setStorageSync('user_info', dic);
    

    在B界面获取数据并缓存到本地

         var user_info = wx.getStorageSync("user_info")
         this.setData({
            username: user_info.username
         });
    

    从本地缓存中同步移除指定 key。这里具体使用同步或是异步需要根据你存储时的方法,或是同步清理本地数据缓存wx.clearStorageSync()

          wx.removeStorageSync("user_info")
    

    同理你可以在B界面传值在A界面取值,只不过这里你需要注意存储、获取的顺序,先存后取,否则你是拿不到值的。

    三、全局的app对象

    这里你需要在app.js文件,写好你要全局使用的数据

            //用户数据
            appData: {
                user_info:null,
            }
    

    在你需要赋值的地方引用app,代码如下:

            var app = getApp();
            app.appData.user_info = {"username":"jane"};
    

    在你需要取值的地方引用app,代码如下:

            var app = getApp();
            var user_info = app.appData.user_info;
            this.setData({
                username: user_info.username
           });
    

    以上是本人自学小程序以来的一些总结,如存在问题请提出评论,或者可以查看我的博客

    相关文章

      网友评论

        本文标题:微信小程序:界面传值、取值

        本文链接:https://www.haomeiwen.com/subject/huwcqftx.html