在小程序开发中,页面传值经常会用到,如果有调用组件和插件的话还会涉及到页面与组件的通信传值等,今天我是想来总结下微信小程序页面和组件传值。

一.页面与页面的传值

1.跳转的url带参传值

微信小程序页面直接传值我们经常用到的是页面URL跳转传值,跳转到的页面通过到生命周

onLoad里面接收。

//A页面Page({data:{},linkTo:function(){//页面事件绑定方法let data = 'hello world';wx.navigateTo({url: '/pages/my/index?name=' + data,})}
})//B页面
Page({data:{name:' '},onLoad:function(option){//接收数据this.setData({name: option.name})}
})

如果页面有多个值要传,直接用&符合链接起来就可以了。

比如'/pages/my/index?name=' + data1+'&number='+data2;

2.全局globalData传值

//app.jsApp({onLaunch (options) {// Do something initial when launch.},onShow (options) {// Do something when show.},onHide () {// Do something when hide.},onError (msg) {console.log(msg)},globalData: {name:'hello world'}})//A页面const app = getApp();//获取全局对象Page({data:{},onLoad:function(){let name = app.globalData.name;console.log(name);//hello world}})

全局数据的拿去是通过拿去globalData对象,再到其他页面获取,当然你也可以

修改全局对象里面数据其他页面从新去获取。

//A页面const app = getApp();//获取全局对象Page({data:{},onLoad:function(){app.globalData.name='微信小程序'; //修改全局数据}})//B页面const app = getApp();//获取全局对象Page({data:{},onLoad:function(){let name = app.globalData.name;console.log(name);//微信小程序}})

3.页面数据缓存wx.setStorageSync(KEY,DATA)

//A页面Page({data:{},onLoad:function(){wx.setStorage({key:"name",data:"hello world"})}})//B页面Page({data:{},onLoad:function(){var value = wx.getStorageSync('name');console.log(value);// hello world}})

此处缓存数据要用同步wx.setStorageSync(),因为异步有可能数据或者有可能会获取不到

二.页面与组件通信

在开发中,很多页面中会使用相同的组件,这时可以将具有相同信息的部分封装成一个组件,方便开发中调用。在调用中可能会涉及到数据的传递问题,例如页面与组件,组件与组件直接的数据传递。

首先看看页面与组件直接的数据传递。

1. 组件需要获取页面传递数据, 可以使用组件的属性来传递值

2. 页面需要获取组件中修改的数据, 可以使用组件中的事件触发页面中定义的事件来获取

第一、组件获取页面中数据

  先创建一个自定义组件test-component

<!--components/test-component/test-component.wxml-->
<view><input class=‘new-name‘ placeholder=‘请输入名字‘ bindinput="bindInputFunc" value=‘{{inputValue}}‘></input><button class=‘btn‘ size=‘mini‘ bind:tap=‘search‘>搜索</button><view>搜索记录:</view><block wx:for=‘{{records}}‘ wx:for-index="index" wx:for-item="record"><view class=‘record‘>{{record}}</view></block>
</view>

第一、在组件test-component.js中定义一个属性

// components/test-component/test-component.js
Component({/*** 组件的属性列表*/properties: {namesData: {type:Array,value:[],observer: function (newVal, oldVal, changedPath) {// 属性被改变时执行的函数(可选),也可以写成在methods段中定义的方法名字符串, 如:‘_propertyChange‘// 通常 newVal 就是新设置的数据, oldVal 是旧数据console.log(newVal);console.log(oldVal);this.setData({records:newVal})}}},/*** 组件的初始数据*/data: {inputValue:‘‘,records: []},/*** 组件的方法列表*/methods: {//输入框输入事件bindInputFunc: function (e) {this.setData({inputValue: e.detail.value})},/*** 组件搜索按钮事件*/search: function() {let records = [...this.data.records];records.push(this.data.inputValue);this.setData({ records, inputValue: ‘‘ })this.triggerEvent("search", { records});/*var myEventDetail = {} // detail对象,提供给事件监听函数var myEventOption = {} // 触发事件的选项this.triggerEvent(‘myevent‘, myEventDetail, myEventOption)触发事件的选项包括:选项名            类型        是否必填        默认值        描述bubbles           Boolean       否           false        事件是否冒泡composed         Boolean       否           false        事件是否可以穿越组件边界,为false时,事件将只能在引用组件的节点树上触发,不进入其他任何组件内部capturePhase      Boolean       否           false         事件是否拥有捕获阶段*/}}
})
  
{"usingComponents":{"test-component":"/components/test-component/test-component"}
}
<test-component namesData=‘{{names}}‘ bind:search=‘homeSearch‘></test-component>
// pages/home/home.js
Page({ /*** 页面的初始数据*/data: {names:[‘aaaa‘,‘bbbb‘,‘cccc‘]},
/*** 搜索的点击事件*/homeSearch: function(e) {console.log(e.detail); // 自定义组件触发事件时提供的detail对象}})

小程序页面传值、页面与组件通信方式总结相关推荐

  1. 微信小程序两个页面跳转,传值

    微信小程序两个页面跳转,传值 在小程序界面,需要点击后跳转界面并且传递一个值. 具体实现如下:首先在wxml界面需要绑定事件,绑定需要传的值 a.wxml `<view bindtap=&quo ...

  2. 小程序如何进行页面之前的传值

    小程序如何进行页面之前的传值 微信小程序中存在页面跳转,页面跳转的时候可以传递相应的参数. 实现效果图: 实现思路: 页面跳转时,将参数跟在链接地址之后传输到其他的页面. 点击WaterFall页面的 ...

  3. 微信小程序开发教程第七章:微信小程序编辑名片页面开发

    前面我们更新了六篇的微信小程序开发教程,现在更新第七章:微信小程序编辑名片页面开发,(第一二章:微信小程序开发教程,第三四章:微信小程序项目结构以及配置&微信小程序首页面开发,第五章:微信小程 ...

  4. 微信小程序点击页面tab栏切换

    微信小程序点击页面tab栏切换 wxml <view class="container"><view class="swiper-tab"&g ...

  5. 小程序内嵌h5页面分享_微信小程序webview内页面分享

    因为项目原因,之前在微信小程序内部使用 webview 嵌套了 h5 页面,现在要添加一个新的功能,用户在哪个页面进行了分享,被分享的用户从链接进来就跳转到哪个分享页面. 先了解一下 web-view ...

  6. 微信小程序webview内页面分享

    因为项目原因,之前在微信小程序内部使用 webview 嵌套了 h5 页面,现在要添加一个新的功能,用户在哪个页面进行了分享,被分享的用户从链接进来就跳转到哪个分享页面. 先了解一下 web-view ...

  7. 微信小程序内含H5页面实现方式

    微信小程序内含H5页面实现方式 一.背景 众所周知,我们写完小程序,发到线上,是需要经历设置版本.提交代码审核.等待审核等步骤,放一个版本下来可能花费很多的时间,甚至很可能等待了很长时间,审核未通过, ...

  8. 微信小程序嵌入 H5 页面(web-view)

    在开发微信小程序的时候,我们有时候会遇到将 H5 页面嵌入到小程序页面中的情况:微信小程序自带的 web-view 组件相当于 HTML 页面中的 iframe ,方便我们在微信小程序中打开一个 H5 ...

  9. 微信小程序与web页面制作的区别

    前言 最近在做一个微信小程序版的个人博客,本来我还有点胆颤,毕竟也没正儿八经的去学一下,不过我之前接触过,而且web方面(网页制作)的基础还可以,所以斗胆就试一试咯,到今天为止,微信小程序页面终于算是 ...

  10. 小程序-js进行页面跳转

    js进行页面跳转 微信小程序 跳转页面 wx.navigateTo({}): wx.navigateTo({ //保留当前页面,跳转到应用内的某个页面(最多打开5个页面,之后按钮就没有响应的)后续可以 ...

最新文章

  1. 计算机dns的工作原理,DNS的工作原理图解说明
  2. 使用PerfView监测.NET程序性能(四):折叠,过滤和时间范围选择
  3. 其他-私人♂收藏(比赛记录 Mar, 2019)
  4. 【JDK源码分析】StringBuilder、StringBuilder、String、AbstractStringBuilder源码解析
  5. 浅谈压缩感知(十六):感知矩阵之RIP
  6. centos7安装python3
  7. 会计信息系统复习资料
  8. 张小龙:微信背后的产品观
  9. php 做圆形头像,php制作圆形用户头像方法
  10. Moq 和 RhinoMocks
  11. 综合布线干线子系统设计原则
  12. SSM的整合项目(详细)
  13. 分享一个超级好用的在线生成地图SiteMap制作工具
  14. 超几何分布检验(hypergeometric test)与费歇尔精确检验(fisher's exact test)
  15. 一文读懂物联网的关键技术有什么?
  16. 谈谈MATLAB数字滤波器频域响应
  17. Studio One5编曲和音频后期制作音乐编辑软件更新及新增功能介绍
  18. 拨开零售电商数字化转型迷雾,电商RPA应用揭秘
  19. 人们愿意购买亲手摸过的商品
  20. PCIE-PCB设计规范!(建议收藏)

热门文章

  1. 区块链网发布区块链百科的步骤
  2. 英首相:比起无协议脱欧 国会阻挠脱欧可能性更高
  3. 专访富数科技吴海斌:隐私计算头部效应明显,2022年落地才是硬道理
  4. Moveit运动学模型
  5. Linux四网口绑定,linux 网口绑定
  6. 使用线程池优化多线程编程
  7. 奇点临近:人类文明延续
  8. HTML基本页面模板
  9. 嵌入式系统课程设计:基于JSoup的鸿蒙教务查询软件
  10. css不可修改,css怎么设置text不可编辑