微信小程序(路由及组件跳页传参)

【本节大纲】
(1)API路由跳页传参
(2)navigator导航组件跳页传参

API路由跳页传参

商品列表展示页
在这里插入图片描述
商品展示页编写

<!--pages/zhuanti/zhuanti.wxml-->
<view class="goodsList">
  <view class="goodBox" bindtap="toDetail" data-item="{{item}}" wx:for="{{goods}}" wx:key="name">
    <image src="{{item.imgSrc}}"></image>
    <view>{{item.name}} {{item.price}}</view>
  </view>
</view>
/* pages/zhuanti/zhuanti.wxss */
.goodsList{
  width: 100%;
  height: auto;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  align-items: flex-start;
  align-content: flex-start;
}
.goodBox{
  width: 45%;
  height: 400rpx;
  margin: 10px auto;
  border: 1rpx solid rgba(0, 0, 0, 0.3);
  border-radius: 6rpx;
}
.goodBox image{
  width: 100%;
  height: 330rpx;
  display: block;
}
.goodBox view{
  line-height: 70rpx;
  font-size: 32rpx;
  text-align: center;
}
  /**
   * 页面的初始数据
   */
  data: {
    goods:[
      { name: '雷神', price: 20, imgSrc: 'https://www.agri35.com/UploadFiles/img_0_1116268190_1801441364_26.jpg' },
      { name: '机器人', price: 13, imgSrc: 'http://images.ali213.net/picfile/pic/2013/03/22/927_zem (6).jpg' },
      { name: '柴犬', price: 30, imgSrc: 'https://www.agri35.com/UploadFiles/img_0_4206379571_53855437_26.jpg' },
      { name: '贝壳', price: 46, imgSrc: 'https://www.agri35.com/UploadFiles/img_0_800837951_203223793_26.jpg' },
      { name: '火影', price: 28, imgSrc: 'https://www.agri35.com/UploadFiles/img_1_3695192305_4134652568_26.jpg' },
      { name: '二狗', price: 17, imgSrc: 'https://www.agri35.com/UploadFiles/img_1_4288039849_2595693982_26.jpg' }
    ],
  },

回到商城列表展示页,如果跳页时直接传参,会发现黄色警告,无法跳页

小程序事件传递参数

在小程序中,给元素绑定事件不能直接传递参数,如果写成bindtap = 'showDetail()'//不能写小括号,会报黄色警告

正解
①给元素绑定自定义属性data-item=”{{item}}”
②在js中通过事件对象获取event.currentTarget.dataset.item

所以应该添加自定义属性data-***,然后在js中通过事件对象获取
语法:event.currentTarget.dataset.自定义属性名
在这里插入图片描述
JS中通过event.currentTarget.dataset.item获取,然后拼接到url后面

  • 参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔
/**跳页 */
toDetail(event){
const item = event.currentTarget.dataset.item;
console.log(item)
wx.navigateTo({
  url: '/pages/zhuanti/shangcheng/shangcheng?name=' + item.name + '&src=' + item.imgSrc + '&price=' + item.price,
  success(){},
  fail(){},
  complete(){}
})
},

这里补充说明下路由跳转API的相关参数

属性参数类型是否必填说明
urlstring跳转页面的路径
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)
商城页面传参后在详情页接收参数
<!--pages/zhuanti/shangchecng/shangcheng.wxml-->
<image class="goodImgArea" src="{{goodImg}}"></image>
<view class="goodInfoArea">{{goodName}} {{goodPrice}}</view>
  /**
   * 页面的初始数据
   */
  data: {
    goodImg: null,
    goodPrice: null,
    goodName: null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (option) {
    this.setData({
      goodImg: option.src,
      goodName: option.name,
      goodPrice: option.price
    })
    console.log(option)
  },

在这里插入图片描述

navigator组件跳页传参

除了使用路由API跳页传参外,使用导航组件navigator进行跳页时,也可以传参,直接往url里拼写即可。

<!--pages/zhuanti/zhuanti.wxml-->
<view class="goodsList">
  <view class="goodBox" bindtap="toDetail" data-item="{{item}}" wx:for="{{goods}}" wx:key="name">
    <navigator url="/pages/zhuanti/shangcheng/shangcheng?name={{item.name}}&src={{item.imgSrc}}&price={{item.price}}">
      <image src="{{item.imgSrc}}"></image>
      <view>{{item.name}} {{item.price}}</view>
    </navigator>
  </view>
</view>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值