微信小程序中组件间通信的三种方式

2023-11-19

事先准备

创建一个项目够 修改目录下的app.json,在pages中注册页面 ,同时新增test1组件 也在app.json中注册为全局组件 并命名为my-test

在这里插入图片描述
app.json 配置

{
  "pages":[
   "pages/home/home",
   "pages/my/my",
   "pages/cart/cart"
  ],
  "tabBar": {
    "list": [
      {
      "pagePath":  "pages/home/home",
      "text": "首页"
    },
    {
      "pagePath":  "pages/my/my",
      "text": "我的"
    }
  
  ]
  },
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "Weixin",
    "navigationBarTextStyle":"black"
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json",
  "usingComponents": {
    "my-test":"components/test1/test1"
  }
}


1、父向子传递数据

例:小程序的home页面要向自定义组件 my-test中 传递 my-test组件计算的初始值 preValue

Home组件

js中:

// pages/home/home.js
Page({
    data: {
        preValue:1000
    }
})

wxml:
引用my-test组件 左边为子组件要接收的变量名 ,右边为自己要传递的变量值

<my-test preVal="{{preValue}}"></my-test>

test1组件

js中:(注意不同:接收的参数 可读可写

// components/test1/test1.js
Component({
    properties: {
        preVal:{
            type:Number,
            value:0
        }
    },
    data: {
        info:"这是一个组件"
    },
    methods: {
        addOne(){
            this.setData({
                preVal:this.data.preVal+1
            })
        }
    }
})

wxml中:

<view>
	{{preVal}}
</view>
<button bindtap="addOne">
+1
</button>

在这里插入图片描述

2、子组件向父组件传递数据

例:在上面例子的基础上 ,父组件中也显示子组件中计算的值 每次点击按钮 子组件计算完后 也要将数据回传给父组件显示

在这里插入图片描述

父组件中定义接收参数能给自身变量赋值的函数 传递给子组件 。子组件通过 this.triggerEvent('接收到的函数名',{value:要传递的值})

Home页面

js:

// pages/home/home.js
Page({
    data: {
        preValue:1000,
        sonVal:0
    },
    setSonVal(e){
    //    console.log(e);
    this.setData({
        sonVal:e.detail.value
    })
    }
})

wxml:

<my-test preVal="{{preValue}}" bind:toSendValue="setSonVal"></my-test>
<view wx:if="{{sonVal===0?false:true}}">子组件的计算值{{sonVal}}</view>

子组件test1

在方法中添加一行

methods: {
        addOne(){
            this.setData({
                preVal:this.data.preVal+1
            })
            this.triggerEvent('toSendValue',{value:this.data.preVal})
        }
    }

3、子父之间通过组件选择器任意传值

可在父组件里调用 this.selectComponent(“id或class选择器”) ,获取子组件的实例对象,从而直接访问子组
件的任意数据和方法。调用时需要传入一个选择器,例如 this.selectComponent(“.my-component”)

同第一个例子:小程序的home页面要向自定义组件 my-test中 传递 my-test组件计算的初始值 preValue 同时将子组件的值传递回父组件

Home

// pages/home/home.js
Page({
    
    data: {
        preValue:1000,
        sonVal:0
    },
    toSonVal(){
        const child=  this.selectComponent(".my_test");
        child.changePreVal(1000);
        this.setData({
            sonVal:child.data.preVal
        })
    }
})
<!--pages/home/home.wxml-->

<my-test  class="my_test"></my-test>
<button bindtap="toSonVal">向子组件传值</button>
<view>子组件的值 {{sonVal}}</view>

test

// components/test1/test1.js
Component({
    properties: {
      
    },
    data: {
        preVal:0
    },
    methods: {
        // 定义给父组件调用的方法
        changePreVal(e){
            console.log('调用');
            this.setData({
                preVal:e
            })
        }
    }
})

通过 this.selectComponent()比较灵活

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序中组件间通信的三种方式 的相关文章

  • 如何检测被覆盖的 CSS 属性?

    I can get all css properties for an element with document stylesheets but some of those are not active because those pro
  • 提升变量有目的吗?

    我最近学习了很多 JavaScript 并且一直在尝试理解提升变量的值 如果有的话 我 现在 明白JS是一个两遍系统 它编译然后执行 另外 我知道 var 关键字 存在 在它声明的词法范围中 因此如果在引擎为其赋值之前调用它 那么它是 未定
  • 如何在javascript中动态向对象数组添加值?

    这是一个对象数组 var data label 1 value 12 label 1 value 12 label 1 value 12 label 1 value 12 我如何动态地为这些添加值 我尝试了以下代码但没有成功 var lab
  • 如何检查是否存在可能的路径?

    我正在开发一个基于 javascript 的实验性游戏 玩家必须在二维平铺地图上移动才能退出 请随意检查这个小提琴并演奏 http jsfiddle net moonlife 74vLd 我只是随机放置障碍物 但有时障碍物会挡住玩家和出口之
  • Chrome 扩展程序可以相互通信吗?

    我正在编写一个Chrome扩展程序 并且想要实现一个接口或api 以便我将来制作的其他扩展程序可以使用它 最终的效果可能如下 分机 B 呼叫extensionA someMethod someParameters 并向分机A发送一些数据 分
  • 有什么方法可以复制 div 的渲染 HTML 吗?

    我正在开发电子邮件签名生成器 我想通过按按钮复制最终签名 而不是手动选择签名并将其复制到剪贴板 这意味着我需要它们的图像 文本和样式 我尝试了几种变体 包括 w3schools 的变体 但没有成功 其中一些只是复制文本 但没有样式 例子 h
  • React中如何触发同级组件的函数?

    I am new to front end world and could not figure out how to trigger a function from a sibling component Lets say I have
  • 从对象中取出具有无效(NaN、空白等)值的键的最佳方法?

    我有一个供用户填写的简短搜索表单 将有多个搜索查询进入 MongoDB 该表单创建一个名为的变量searchParams可能看起来像这样 var searchParams city Springfield bedrooms 3 bathro
  • 如何在 JavaScript 中将变量的内容写入文件[重复]

    这个问题在这里已经有答案了 可能的重复 firefox 如何启用本地 JavaScript 来读取 写入我的 PC 上的文件 https stackoverflow com questions 2846045 firefox how to
  • 如何调试超时等待异步 Angular 任务?无法在角度页面上找到元素

    编辑 请注意 在 ernst zwingli 的帮助下 我找到了问题的根源 因此 如果您遇到相同的错误 他指出的修复之一可能会帮助您 我的问题是量角器本身的一个已知问题 如果您认为这可能是您 我已经扩展了我的步骤 以在我最初的问题之后查明问
  • 非法使用break语句; javascript

    当这个变量达到一定数量时 我希望循环停止 但我不断收到错误 未捕获的语法错误 非法的中断语句 function loop if isPlaying jet1 draw drawAllEnemies requestAnimFrame loop
  • Next.js:错误:React.Children.only 期望接收单个 React 元素子元素

    我有一个名为Nav inside components目录及其代码如下所示 import Link from next link const Nav gt return div a Home a a About a div export d
  • 嵌套 DIV 的类似斑马的 CSS 样式

    我嵌套了 DIV 元素 但我不知道嵌套的级别 我需要每个都有与其父级不同的背景 创建类似斑马的颜色 我只使用两种背景 深色和白色 效果需要类似于在容器中设置奇数和偶数子级的样式 但在我的例子中 子级是嵌套的 我可以使用每个嵌套元素的规则来做
  • 引用自身的 Javascript 对象...有问题吗?

    由于 Javascript 允许通过引用分配复合值 因此如果 Javascript 对象引用自身 它将创建无限的引用集 如控制台中所示 这看起来像是某种无限循环 但 Chrome 似乎没有问题 这样做是否存在任何内存问题或其他风险 就记忆力
  • AngularStrap 工具提示禁用我的自定义指令

    我正在尝试让 bs tooltip AngularStrap 指令与我自己的名为 checkStrength 的自定义指令一起使用 该指令检查密码的强度 单独使用这些指令中的任何一个时 它们都可以正常工作 但不能一起工作 This http
  • 在 Android Chrome 中隐藏 HTML5 音频/视频通知

    我的网络应用程序上有一个 HTML5 音频元素 在某些时候 我使用以下代码以编程方式停止播放 audioElement pause audioElement currentTime 0 播放音频时 我的 Android 设备 使用 Goog
  • 在 Nodejs 中,如何停止 FOR 循环直到 MongoDB 调用返回

    我正在研究下面的代码片段 我有一个名为 stuObjList 的 JSON 对象数组 我想循环遍历数组以查找具有特定标志集的特定 JSON 对象 然后进行数据库调用以检索更多数据 当然 FOR 循环不会等待数据库调用返回并到达 j leng
  • 在 React Web 应用程序中使用 createjs-soundjs

    我想用https www npmjs com package createjs soundjs https www npmjs com package createjs soundjs在 React Web 应用程序上播放声音 我正常安装了
  • 使用ExternalInterface和IE从JavaScript获取Flash中的当前URL

    我正在尝试获取 Flash 播放器当前所在的 URL 不是 swf 文件的 URL 而是浏览器指向的 URL 到目前为止我已经使用过 var st String ExternalInterface call window location
  • Chrome 调试器注入 javascript

    我有这样的好奇心 是否可以以某种方式在我的页面中注入 javascript 并执行它并调试它 正如您在控制台中所做的那样 但在控制台中您无法暂停并观察变量 是否可以调试我通过控制台输入的代码 为什么无法调试通过 XHR 接收的代码 Than

随机推荐

  • Python查询MySQL数据库并输出相应信息

    场景描述 将fork的编号与ip信息存储在了MySQL中 数据库为forklift 数据表名为fork info 存储格式为id num ip 那么如何用python去查询这些信息呢 分析 根据提供的MySQL表结构 想从名为fork in
  • 【千律】C++基础:打开并下载网页 -- ShellExecuteEx 和 URLDownloadToFile 函数

    include
  • Elasticsearch 7 系列(3) —— 核心概念

    目录 集群 cluster 节点 node 索引 index 类型 type 要学好Elasticsearch 就得先对Elasticsearch中的概念有所了解 接下来我们就重点说说Elasticsearch中的集群 节点 索引 类型 文
  • 多个if语句并列_使用if-then 语句

    最基本的结构化命令就是if then语句 if then语句有如下格式 if command then commands fi 简单的例子 cat test1 sh bin bash testing the if statementif p
  • 开发工具链-DevOps_阿里云云效

    简介 阿里云效官网 DevOps Development和Operations的组合词 是一组过程 方法与系统的统称 用于促进开发 应用程序 软件工程 技术运营和质量保障 QA 部门之间的沟通 协作与整合 百度百科 快速开始 1 云效首页
  • 给导航网站新增了一些免费影视网站,欢迎体验

    使用时建议使用火狐浏览器 并安装广告屏蔽插件 这样就没有广告 视频内的广告千万不要相信 其余安心食用 地理导航 地理上网从这里开始
  • VS Code Remote Development

    配置VSCode Remote Development 1 Ubuntu 上启用 SSH 1 打开终端 并且安装openssh server软件包 sudo apt update sudo apt install openssh serve
  • 图像处理岗位面试题搜罗汇总

    传统图像处理部分 图像处理基础知识 彩色图像 灰度图像 二值图像和索引图像区别 彩色图像 RGB图像 灰度图像 0 255像素值 二值图像 0和1 用于掩膜图像 索引图像 在灰度图像中 自定义调色板 自定义输出256种颜色值 常用的图像空间
  • java 泛型 作用与定义

    1 泛型方法的定义和使用 public static void main String args throws ClassNotFoundException String str get 哈士奇 world System out print
  • Mac显示放大镜

    设置快捷键 系统默认是不开启热键的 如果需要设置 操作如下 设置 system preferences gt accessibility 在左侧找到room 进入配置窗口 按如上配置后 按住option键 然后两指向上就可以放大 两指向下就
  • 这座城市引领大模型浪潮!80余个AI大模型,一半集结在这里!

    刚刚结束的2023全球数字经济大会上 人工智能高峰论坛掀起了一股热潮 大型模型的发展和应用成为了会议的亮点 而作为这次盛会的主办方之一 北京市已经成为了这场人工智能革命的领先力量 作为人工智能产业的引领者 北京不负众望 国内已有80余个大型
  • Redis系列(七)Redis主从、哨兵、cluster集群方案解析

    文章目录 Redis主从 主从数据同步 同步 建立连接 完整重同步 全量同步 触发条件 部分重同步 增量同步 复制偏移量 offset 复制积压缓冲区 replication backlog buffer 部分重同步执行过程 命令传播 指令
  • 机器视觉最火应用领域

    1 图像和视频识别 人工神经网络领域最重要的进展之一出自 ImageNet ImageNet收集了 1400 万标签图像并于2009年发布 ImageNet挑战赛要求参赛者设计一个能够跟人类一样对照片进行分类的算法 但一直没有出现获胜者 直
  • Python图像处理 PIL中convert(mode)函数详解

    模式分类 PIL有九种不同模式 1 L P RGB RGBA CMYK YCbCr I F mode 1 代码示例 为二值图像 非黑即白 每个像素用8个bit表示 0表示黑 255表示白 from PIL import Image 读取一张
  • python快乐数字怎么表达_Python中的快乐数字

    在这里 我们将看到如何检测数字n是否为一个快乐数字 因此 快乐数字是一个数字 其中以任何正整数开头的数字均用其数字的平方和代替 该过程将重复进行直到其变为1 否则它将无休止地循环循环 这些数字 当找到1时 将成为快乐数字 假设数字为19 则
  • 类加载机制+双亲委派机制(通俗易懂版)

    1 类加载机制 一个类从加载到使用到卸载一共经过了5个步骤 加载 gt 连接 gt 初始化 其中连接分为验证 准备 解析三个阶段 1 加载 那么什么时候会将 class文件加载到jvm中 就是在你使用这个类的时候 验证 准备 解析 2 验证
  • 【计算机视觉】CLIP:语言-图像表示之间的桥梁

    文章目录 一 前言 二 架构 三 应用 3 1 图像分类 3 2 图像描述 3 3 文本到图像 四 总结 一 前言 最近GPT4的火爆覆盖了一个新闻 midjourney v5发布 DALLE2 midjourney都可以从文本中生成图像
  • 生成随机数

    目录 1 生成随机数sand 函数 2 srand 函数设置生成随机数 3 时间戳 4 如何生成规定位数的随机数呢 1 100 5 猜数字对生成随机数的应用 1 生成随机数sand 函数 这个函数会返回一个从0到RAND MAX的随机整数
  • 线性回归误差项方差的估计

    线性回归误差项方差的估计 摘要 线性回归误差项概念的回顾 残差平方和 residual sum of squares 残差平方和的期望 实验验证 参考文献 摘要 之前在文章线性回归系数的几个性质 中 我们证明了线性回归系数项的几个性质 在这
  • 微信小程序中组件间通信的三种方式

    事先准备 创建一个项目够 修改目录下的app json 在pages中注册页面 同时新增test1组件 也在app json中注册为全局组件 并命名为my test app json 配置 pages pages home home pag