您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > 小程序

微信小程序页面传值、组件间通信总结

时间:2019-07-29 17:48:17  来源:  作者:
微信小程序页面传值、组件间通信总结

 

小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便

捷地获取和传播,同时具有出色的使用体验。对于微信小程序,前端开发应该不陌生,目前也

是非常火,很多公司都会进行开发。对于小程序的优点我就不到这过多描述了,今天我是想来

总结下微信小程序页面和组件传值。

微信小程序页面传值、组件间通信总结

微信小程序目录结构

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.js
App({
 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);//微信小程序
 
 }
 })

2.页面与页面传值-页面数据缓存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(),因为异步有可能数据或者有可能会获取不到
 
 

下面我们来说说 微信小程序组件之前传值

组件间通信

组件间的基本通信方式有以下几种。

  • WXML 数据绑定:用于父组件向子组件的指定属性设置数据,仅能设置 JSON 兼容数据
  • (自基础库版本 2.0.9 开始,还可以在数据中包含函数)。具体在 组件模板和样式 章节中介绍。
  • 事件:用于子组件向父组件传递数据,可以传递任意数据。
  • 如果以上两种方式不足以满足需要,父组件还可以通过 this.selectComponent 方法获取子组件实例对象,这样就可以直接访问组件的任意数据和方法。

说到组件,这里我们先了解组件的使用,组件的js、json文件和页面不一样。

 Component构造器

Component({
 behaviors: [],
 properties: {
 myProperty: { // 属性名
 type: String,
 value: ''
 },
 myProperty2: String // 简化的定义方式
 },
 
 data: {}, // 私有数据,可用于模板渲染
 lifetimes: {
 // 生命周期函数,可以为函数,或一个在methods段中定义的方法名
 attached: function () { },
 moved: function () { },
 detached: function () { },
 },
 // 生命周期函数,可以为函数,或一个在methods段中定义的方法名
 attached: function () { }, // 此处attached的声明会被lifetimes字段中的声明覆盖
 ready: function() { },
 pageLifetimes: {
 // 组件所在页面的生命周期函数
 show: function () { },
 hide: function () { },
 resize: function () { },
 },
 methods: {
 onMyButtonTap: function(){
 this.setData({
 // 更新属性和数据的方法与更新页面数据的方法类似
 })
 },
 // 内部方法建议以下划线开头
 _myPrivateMethod: function(){
 // 这里将 data.A[0].B 设为 'myPrivateData'
 this.setData({
 'A[0].B': 'myPrivateData'
 })
 },
 _propertyChange: function(newVal, oldVal) {
 }
 }
})

使用 Component 构造器构造页面

{
 "component": true,//这里是它把定义成组件,要不然引入到页面会报错
}

引入组件

//A页面 json 

{
 "usingComponents": {
 "myComponents": "../../components/myComponents/index",//引入组件
 },
}

//A页面 WXML

<myComponent name="hello world"></myComponent>

//myComponent接收数据

Component({
 properties: {
 name:{
 value: "",
 type: String //此处设置数据类型 这样 组件就能接收到数据
 }
 },
 methods: {
 
 }
 })

 

组件间通信与事件

监听事件

事件系统是组件间通信的主要方式之一。自定义组件可以触发任意的事件,引用组件的页面可以监听这些事件。监听自定义组件事件的方法与监听基础组件事件的方法完全一致:

<!-- 当自定义组件触发“myevent”事件时,调用“onMyEvent”方法 -->

<myComponent bindmyevent="onMyEvent"></myComponent>

<!-- 或者可以写成 -->
<myComponent bind:myevent="onMyEvent"></myComponent>

Page({
 onMyEvent: function(e){
 e.detail // 自定义组件触发事件时提供的detail对象
 }
})

触发事件

自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail对象和事件选项

<!-- 在自定义myComponent组件中 -->
<button bindtap="onTap">点击这个按钮将触发“myevent”事件</button>

Component({
 properties: {},
 methods: {
 onTap: function(){
 var myEventDetail = {} // detail对象,提供给事件监听函数
 var myEventOption = {} // 触发事件的选项
 this.triggerEvent('myevent', myEventDetail, myEventOption)
 }
 }
})



Tags:微信小程序   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
微信小程序“无障碍急救平台”日前上线,解决听障人士120急救呼叫难题。听障人士在日常生活、工作中常有信息缺失、沟通不良的困难。如果自身或身边人突发急症,则需要依靠他人...【详细内容】
2021-12-15  Tags: 微信小程序  点击:(10)  评论:(0)  加入收藏
现如今卖东西的渠道是越来越多,如今在微信小程序也能开店卖东西了,有的小伙伴想在小程序上卖东西但不知道该怎么做,下面就来讲讲微信小程序如何做店铺,利用微信小程序!但凡得到公...【详细内容】
2021-11-03  Tags: 微信小程序  点击:(32)  评论:(0)  加入收藏
作者:灰灰来源:JS每日一题 一、背景传统的web开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录服务端校验用户信息通过之后,下发一个代表登录态...【详细内容】
2021-10-29  Tags: 微信小程序  点击:(43)  评论:(0)  加入收藏
一、微信服务号主要偏于服务交互(类似银行,114,提供服务查询),认证前后都是每个月可群发4条消息(不适用于个人)二、微信订阅号主要偏于为用户传达资讯(类似报纸杂志),认证前后都是每天...【详细内容】
2021-10-22  Tags: 微信小程序  点击:(82)  评论:(0)  加入收藏
总结列举微信小程序开放能力清单 硬件能力 蓝牙 NFC读写 连接WIFI设备 开放能力 ...【详细内容】
2021-09-27  Tags: 微信小程序  点击:(60)  评论:(0)  加入收藏
功能说明脱离公众号下的小程序,单独使用功能特点小程序:是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用...【详细内容】
2021-09-27  Tags: 微信小程序  点击:(46)  评论:(0)  加入收藏
微信小程序不愧是智能时代的宝藏发明,不用下载不占内存,点开就能用。今天介绍这7个小程序,个个都拥有超实用的功能,用了就知道有多香! 1.腾讯文档腾讯出品的在线文档编辑器,提供在...【详细内容】
2021-08-27  Tags: 微信小程序  点击:(101)  评论:(0)  加入收藏
微信上有很多好用的小程序,虽然不是很多人知道,但却很强大。这里就来分享8款相见恨晚的微信小程序,可以让手机更好用,还不知道的话,未免有点太可惜了,一起来看看吧。 1、专去水印...【详细内容】
2021-07-28  Tags: 微信小程序  点击:(101)  评论:(0)  加入收藏
微信小程序的出现让手机内存不再高负荷,同时也出现了很多实用的小程序例如以下这么几个。1、文章截图文章截图小程序主要实用功能可以通过截图实现保证精度的情况下进行无缝...【详细内容】
2021-07-14  Tags: 微信小程序  点击:(83)  评论:(0)  加入收藏
微信上有很多小程序,比起app更小巧,使用起来更加方便。这里就来为大家分享7个精心挑选的微信小程序,每一个都让人觉得相见恨晚,能让你的手机更好用。 1、群相册服务专属于一个群...【详细内容】
2021-07-13  Tags: 微信小程序  点击:(124)  评论:(0)  加入收藏
▌简易百科推荐
一、项目背景随着小程序在用户规模和商业化上取得的极大成功,各大平台都推出了自己的小程序。然而这些平台的小程序开发在语法上又不尽相同,不同平台小程序代码的维护需要投入...【详细内容】
2021-11-05  携程技术    Tags:小程序   点击:(65)  评论:(0)  加入收藏
作者:灰灰来源:JS每日一题 一、背景传统的web开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录服务端校验用户信息通过之后,下发一个代表登录态...【详细内容】
2021-10-29  Nodejs开发    Tags:微信小程序   点击:(43)  评论:(0)  加入收藏
总结列举微信小程序开放能力清单 硬件能力 蓝牙 NFC读写 连接WIFI设备 开放能力 ...【详细内容】
2021-09-27  软件开发分享    Tags:微信小程序   点击:(60)  评论:(0)  加入收藏
核心商城(CoreShop)介绍核心小程序商城系统(CoreShop) 是基于 Asp.Net 5.0、Uni-App开发、支持可视化布局的小程序商城系统;前后端分离,支持分布式部署,跨平台运行;拥有分销、代理、...【详细内容】
2021-07-20  码农也有梦想    Tags:小程序商城   点击:(115)  评论:(0)  加入收藏
介绍Vue3发布已经有一段时间了,从目前来看,其生态还算可以,也已经有了各种组件库给予了支持,但是不管是Vue3还是Vue2都无法直接用来开发小程序,因此国内一些技术团队针对Vue开发...【详细内容】
2021-07-13  爱分享Coder    Tags:小程序   点击:(204)  评论:(0)  加入收藏
首先明确几个概念1. W3C:指万维网联盟(World Wide Web Consortium),是一个国际的标准的制定机构。2. H5(HTML5,HyperText Markup Language 5的缩写),HTML5 是由W3C制定的新HTML标...【详细内容】
2021-07-06  畅游零和一的海洋    Tags:微信小程序   点击:(153)  评论:(0)  加入收藏
在开发微信公众号时,需要不时请求URL和数据封装。为了不做重复的工作。提取公共部分进行封装。产生了相应的公众类。今天先来写下请求类,代码如下:public class HttpRequestP...【详细内容】
2021-06-16  java浮萍  今日头条  Tags:公共类   点击:(134)  评论:(0)  加入收藏
小程序上线后,改版了很多次,包括一些 Api 接口也有改动。如果你学习一个很久之前的小程序项目是没有意义的,本文推荐的小程序都是最近有更新的。相信在你学习、部署的过程中,不...【详细内容】
2021-06-08    程序猿久一  Tags:微信小程序   点击:(207)  评论:(0)  加入收藏
自从2019年微信公开课Pro在微信之夜演示《跳一跳》以来,微信小游戏已经不知不觉走过的三年,这三年中我们可以明显看到微信对小游戏的扶持,对于微信开发者来说,微信小游戏开发以...【详细内容】
2021-05-25  开课吧科科  今日头条  Tags:微信小游戏   点击:(212)  评论:(0)  加入收藏
学习编程从hello world开始。学习微信小程序开发首先要安装一个微信开发者工具,官网上免费下载童叟无欺,下载完傻瓜式安装即可。 双击微信开发者工具,然后选择小程序,然后点击...【详细内容】
2021-05-12  程序员fearlazy  fearlazy  Tags:微信小程序   点击:(268)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条