小程序传值

A页面向B页面传递值

onLoad方法将字符串'aaa'赋值给wx.aaa变量。而 jump 方法用来响应按钮的点击事件,当点击按钮时会跳转至 /pages/b/b 页面

<button bindtap="jump">跳转</button>
// 在页面的 js 文件中
onLoad(options) {
    wx.aaa='aaa';// 将 'aaa' 赋值给 wx.aaa
}

//执行jump函数
jump(){
    wx.navigateTo({
        url: '/pages/b/b',// 跳转到 /pages/b/b 页面
    })
},

 在 /pages/b/b 页面中,可以通过 wx.aaa 获取到传递的值 'aaa'。在正确的时机使用该值,例如在页面的 onLoad 方法中:

// 在 /pages/b/b 页面的 js 文件中
onLoad() {
  let value = wx.aaa;
  console.log(value); // 输出 'aaa'
}

这种方式是通过在全局对象 wx 上定义变量来实现数值的传递。

注意:这种传值方式有一些限制,例如需要在源页面的生命周期中赋值,目标页面的生命周期中才能获取到正确的值。同时,需要注意全局变量的使用场景,确保不会造成不必要的混淆或冲突。

父传子:

如果我们想在父组件中使用子组件,并传递 listData 数组作为属性值。子组件接收父组件传递的属性值,并在子组件内部使用 wx:for 循环渲染。

首先,确保父组件的 JSON 配置中已经引入了子组件:

// 在父组件的 JSON 配置文件中
"usingComponents": {
  "lists": "../../component/list/lists"
}
data:{
    listData:[{id:1,name:'男装'}]
}

然后,在父组件的 WXML 文件中使用子组件: 

<!-- 在父组件的 WXML 文件中 -->
<lists lists="{{listData}}"></lists>

上述代码将 listData 数组作为 lists 属性的值传递给子组件。在子组件中,需在 properties 中声明 lists 属性,并指定类型为 Array,如下:

// 在子组件的 JS 文件中

//第一种
properties: {
  // 接收父组件传递过来的值
  lists: {
    type: Array,
    value: [
      {
        id: 2,
        name: "默认值"
      }
    ]
  }
}


//第二种
properties: {
  // 接收父组件传递过来的值
  lists:Array
}

这样,子组件就能够接收父组件传递过来的 listData 数组,并在子组件的 WXML 文件中使用 wx:for 循环渲染,如下:

<!-- 在子组件的 WXML 文件中 -->
<view wx:for="{{lists}}" wx:key="id">{{item.name}}</view>

以上代码会将 lists 数组中的每个对象渲染为一个 <view> 元素,并展示其 name 属性的值。

<lists lists="{{listData}}"></lists>----第一种
<lists></lists>                     ----第二种

第一种方式是传递具体的数组 listData 给子组件。

第二种方式是在子组件的属性声明中设置一个默认值,供父组件未传递属性时使用。

子传父:

如果想在子组件中触发一个自定义事件,将数据传递给父组件,并在父组件中监听该自定义事件并获取传递的数据。在子组件中,可以使用 bindtap 绑定一个点击事件,并在事件处理函数中使用 this.triggerEvent 来触发一个自定义事件,并传递数据。

子组件的代码如下:

<!-- 在子组件的 WXML 文件中 -->
<view bindtap="givefather">子传父</view>
// 在子组件的 JS 文件中
Component({
  methods: {
    givefather() {
      let msg = '这是子组件传给父组件的数据';
      this.triggerEvent('zidingyishijianming', msg);
    }
  }
})

在父组件中,可以使用 bind:自定义事件名 来监听子组件触发的自定义事件,并在事件回调函数中获取传递的数据。

父组件的代码如下:

<!-- 在父组件的 WXML 文件中 -->
<lists bind:zidingyishijianming="fatherhuode"></lists>
// 在父组件的 JS 文件中
Page({
  fatherhuode(e) {
    console.log('e', e.detail); // 输出从子组件传递的数据
  }
})

当在子组件中触发 givefather 事件后,父组件的 fatherhuode 方法会被调用,并且可以通过 e.detail 获取到子组件传递的数据。在这个示例中,输出的结果将是 '这是子组件传给父组件的数据'

注意:在父组件中使用自定义事件时,需要绑定在子组件标签上,使用 bind:自定义事件名,并在事件回调函数中使用 e.detail 来获取子组件传递的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值