微信小程序开发之页面传参

这篇具有很好参考价值的文章主要介绍了微信小程序开发之页面传参。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

传参主要是三种:
1.简单值传参如:id=1,string = asdfg之类,其中字符不包含特殊字符如?、=之类
2.含特殊字符传参如一个地址http://r.photo.store.qq.com/psb?/V10VqIG41I6D36/r5rQV.oz3tu1uuNvJjkDIzwhKi6nUfZaaLEH9UnNUCk!/r/dBkBAAAAAAAA
3.对象类型传参如一个数组,image【】。
第一种的话比较简单比如

这个是源页面的js文件他需要在wxml文件里面进行属性绑定

enlargr11: function (event) {
    var id = event.currentTarget.dataset.id;
    console.log("id"+id);
    wx.navigateTo({
      url: '../toimg/toimg?id='+id,
    })
  },
<image class="slide-image" mode="aspectFit" src="{{item.imageUrl}}" bindtap="enlargr" 
          data-id="{{item.imgid}}"/>//这里需要注意照片大小问题

这里我在js的data里面是定义了一个imageUrls数组里面有imid和imageUrl两个内容如

 imageUrls: [{
        "imageUrl": "https://img0.baidu.com/it/u=154603817,3028123296&fm=26&fmt=auto",
        "imgid": 0
      }]

然后目的页面需要在初始渲染时进行接收,代码如

​
onLoad2: function (options) { //传imageurl的下标
    var pid = options.id;
    console.log("pid" + pid);
    this.data.id = pid;//前面那个this.data.就是说是引用什么data里面定义的id
    this.setData({
      
    })
    console.log("id " + id);//打印id
  },

​

第二种稍微复杂有点如

因为在微信小程序里面encodeURIComponent进行转化操作(主要是我也不知道应该怎么称呼)

enlargr: function (event) { //直接传参src地址的
    var imagesrc = event.currentTarget.dataset.src;
    console.log(imagesrc);
    //var tt = JSON.stringify(imagesrc);
    //console.log(tt);
    var src = encodeURIComponent(imagesrc);
    console.log("src")
    console.log(src);
    wx.navigateTo({
      //url: '../toimg/toimg?imgsrc='+src,
      url: '../toimg/toimg?imgsrc='+src,
    })
  },

然后此时wxml里面的属性绑定需要做一些修改如

<image class="slide-image" mode="aspectFit" src="{{item.imageUrl}}" bindtap="enlargr" 
          data-src="{{item.imageUrl}}"/>//这里需要注意照片大小问题

目的页面为:然后接受时肯定要解密,使用decodeURIComponent

onLoad: function (options) { //这个是尝试直接传参路径
    var t = options.imgsrc;
    console.log(t);
    
    var src = decodeURIComponent(t);
    console.log("src");
    console.log(src);
    this.data.imgsrc = src;
    this.setData({
      //imagesrc: src,
    })
    console.log(this.data.imgsrc)
  },

第三种就复杂了

原来上是先将其转化为json格式,然后考虑是否有特殊字符,就是需不需要加密就是加上encodeURIComponent和decodeURIComponent进行包装一下,如:源页面

 enlargr2:function(e){
    console.log(e.currentTarget.dataset.item);
    let str=JSON.stringify(e.currentTarget.dataset.item);
   console.log(str);
   var data0 = encodeURIComponent(e.currentTarget.dataset.item);
      let data=JSON.stringify(data0);
      
      var data1 = JSON.stringify(e.currentTarget.dataset.item);
      var data2 = encodeURIComponent(data1);
     
      wx.navigateTo({
      url: '../toimg/toimg?data='+data2,
      })
     
    
  },

对应的wxml里面也需要做一些修改,就是属性绑定哪里需要改为item,如

​
<image class="slide-image" mode="aspectFit" src="{{item.imageUrl}}" bindtap="enlargr" 
          data-item="{{item}}"/>//这里需要注意照片大小问题

​

目的页面就是,如

onLoad3: function (options) {
    console.log(options.data);
    var data = options.data;
    var datat = decodeURIComponent(options.data);
    console.log(datat);
    //var data3 = JSON.stringify(data);
    //var data4 = JSON.parse(data1);
    //var data5 = JSON.parse(options.data);
    //var data6 = decodeURIComponent(data5);
    
    this.data.imageUrlts = datat;
    
    console.log(this.data.imagesrc);
    this.setData({
          })
    
    console.log(this.data.imageUrlts);
  },

上面的话我是没有在接受时从json转化回来,但是结果还是正确的,接受页面的json.parse和json.stringify有什么区别我没查,如果有需要可以自行了解。

总结一下:

主要是关于带特殊字符的传参,需要进行加密解码既encodeURIComponent和decodeURIComponent(个人叫法),然后就是是否为对象类型,就是需不需要json格式转化。对于源页面js文件里面调用navigateTo进行带参数跳转还有其他跳转方式参考微信官方文档,

wx.navigateTo({

      url: '../toimg/toimg?data='+data2,

      })

url那里好像不止一种写法我个人是怎么写的,就是‘跳转页面url?数据名=’+数据内容,

主要是做个笔记,怕后面改代码忘了,里面一些细节可能没怎么处理好,望后来者有发现错误指出,多有不足。文章来源地址https://www.toymoban.com/news/detail-490370.html

到了这里,关于微信小程序开发之页面传参的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序开发系列(十一)·小程序页面的跳转设置以及参数传递

    目录 1.  跳转到商品列表 1.1  url: 当前小程序内的跳转链接 1.2  navigate:保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面 1.3  redirect: 关闭当前页面,跳转到应用内的某个页面。但不能跳转到 tabbar 页面 1.4  navigate和redirect的区别 1.5  switchTab:跳转到 t

    2024年04月12日
    浏览(37)
  • 微信小程序 method传参 和 页面传参

    image src=\\\"/img/b1.jpg\\\" class=\\\'bannerImg\\\' mode=\\\"widthFix\\\" bindtap=\\\"gotoMessage\\\" data-flag=\\\"msg\\\"/image 使用data-参数Key = \\\'指定参数值\\\' gotoMessage(e){     let flagName =  e.target.dataset.flag     if(flagName === \\\'msg\\\'){       wx.switchTab({         url: \\\'/pages/message/message\\\',       })     }else if(fla

    2024年02月09日
    浏览(40)
  • 微信小程序如何实现页面传参?

    只要你的小程序超过一个页面那么可能会需要涉及到页面参数的传递,下面我总结了 4 种页面方法。 通过在url后面拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 分隔;如 ‘path?key=valuekey2=value2’。 案例:A页面带参数跳转到B页面 A页面跳转代

    2024年02月15日
    浏览(32)
  • 微信小程序开发系列(三十二)·如何通过小程序的API实现页面的上拉加载(onReachBottom事件)和下拉刷新(onPullDownRefresh事件)

    目录 1.  上拉加载 2.  下拉刷新         上拉加载是小程序中常见的一种加载方式,当用户滑动页面到底部时,会自动加载更多的内容,以便用户继续浏览小程序中实现上拉加载的方式: ①  在app.json或者page.json中配置距离页面底部距离:onReachBottomDistance;默认50px。 ②

    2024年04月12日
    浏览(32)
  • 微信小程序开发---页面导航

    目录 一、页面导航的概念 二、页面导航的实现 (1)声明式导航 1、概念 2、导航到tabBar页面 3、导航非tabBar页面 4、后退导航 (2)编程式导航 1、导航到tabBar页面 2、导航到非tabBar页面 3、后退导航 三、导航传参 (1)声明式导航传参 (2)编程式导航传参 (3)在onLoad中接收

    2024年02月09日
    浏览(32)
  • 微信小程序如何实现页面传参和页面传递多个参数

    只要你的小程序超过一个页面那么可能会需要涉及到页面参数的传递,下面我总结了 4 种页面方法。 下面时多个参数页面传参的方式   通过在url后面拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 分隔;如 ‘path?key=valuekey2=value2’。 案例:

    2024年02月11日
    浏览(56)
  • 微信小程序页面之间传参的几种方式

    目录 前言 第一种:url传值 url传值使用详细说明 api跳转 组件跳转 第二种:将值缓存在本地,再从本地取值 第三种:全局传值(应用实例传值) 第四种:组件传值 第五种:使用通信通道(通信通道是wx.navitageTo()独有的) 第六中:使用页面栈(只对当前页面栈中存在的页面生效

    2024年04月13日
    浏览(28)
  • 【小程序】微信小程序开发在app.json中新建页面时报[ WXML 文件编译错误] (env: Windows,mp,1.06.2206090; lib: 2.25.0)...

    当直接在app.json里面添加了路径后,会自动生成出对应的文件,但是会报上面的错误 [ WXML 文件编译错误] (env: Windows,mp,1.06.2206090; lib: 2.25.0) 我尝试把生成的wxml里面清空 又把app.json多更改几次后,这个错误不见了

    2024年02月13日
    浏览(35)
  • 微信小程序返回上级页面传参的几种方法

    在做微信小程序跳转页面,经常会遇到二级页面要返回上级页面,并且需要携带参数,wx.navigateTo()跳转大家都知道直接在url上面拼接参数,之后再二级页面onLoad(options)里获取,但是返回页面wx.navigateBack()不可以那样做,所以就可以用以下几种方式来做,具体看个人业务适合用

    2024年02月08日
    浏览(45)
  • uniapp微信小程序 页面跳转传参(uni.switchTab传参无法获取,uni.reLaunch传参可以获取)

      因为是tab页面,我首先想到的就是通过:uni.switchTab进行页面跳转。 代码如下: 然后在首页的onShow生命周期函数中进行监听路由参数。 代码如下: 结果uni.switchTab跳转的页面是不能够将路由参数传递到页面中的。  这样就可以拿到路由中的参数了。  这样问题就解决了。

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包