uni-app入门:自定义组件实现父子组件参数传递

简介: 观察可以发现子组件subCount与subCountAdd方法均被调用;使用this.setDate即可更改子组件属性.

1.属性绑定:父组件传递参数到子组件


   首先交代一下基本的项目信息:主页面为index.wxml,创建test子组件,文件目录:component/test/test,index.json中引用test组件.

{
  "component": true,
  "usingComponents": {
    "test":"/component/test/test"
  }
}


演示案例:

   父组件中定义num并初始化数据为1,将num传递到子组件test中并展示.

index.js中定义num并初始化数据为1

Page({
  data: {
    num:1
   }
   })


index.html中创建view组件

<view>父组件属性:{{num}}</view>


test.html中接收父组件中数据:

<view>子组件获取到父组件的属性:{{num}}</view>


test.js中定义num属性:

Componet({
  properties:{
    num:Number
  }
})


页面展示效果如下:

11f0217aff4e973db7918bc3f960e79c_1d5d3e27d56644a0a09ee8af2722475c.png


2.事件绑定:子组件传递参数到父组件


   操作步骤:

1.父组件js中定义函数;

2.父组件中通过传递自定义事件形式传递给子组件;

3.子组件js中调用父组件自定义事件;

this.triggerEvent('父组件函数',
      {value: 子组件参数});

3.父组件自定义事件处理子组件传递参数,通过event.detail.value获取


   示例说明:

index.wxml中添加test组件,test组件创建初始值subCount和加一按钮,点击按钮实现subCount加一.父组件中创建初始值parCount,实现test子组件中点击按钮之后不仅能实现subCout加一,也能将subCount赋值给parCount.即点击按钮实现subCount与parCount同步变化.

子组件test中初始化subCount以及创建按钮实现点击加一操作:

test.wxml:

<view>子组件data属性subCount值:{{subCount}}</view>
<button type="primary" bindtap="subCountAdd">子组件中点击数据值加一</button>


test.js中:

Component({
data:{
    subCount:1
  },
 methods:{
 subCountAdd:function(){
      this.setData({
        subCount: this.data.subCount+1
      })
    }}
})


父组件index.js中初始化parCount并创建传递参数函数,通过参数event.detail.value来获取传递参数:

Page({
  data: {
    parCount:2
   },
   // 自定义父组件函数
   transferFucntion(event){
    console.log("父组件中传参事件触发!"),
    console.log(event.detail)
  }
  }
)


父组件index.wxml中在子组件test中传递自定义函数:

<test bind:transferFucntion="transferFucntion"></test>
<view>父组件data属性parCount值:{{parCount}}</view>


子组件test.js中的加一方法中添加父组件的自定义事件,传递参数为


Component({
data:{
    subCount:1
  },
 methods:{
 subCountAdd:function(){
      this.setData({
        subCount: this.data.subCount+1
      }),
        // 注册父组件方法,this.triggerEvent('父组件函数名',参数(非必填))
      this.triggerEvent('transferFucntion',
      {value: this.data.subCount});
    }}
})


父组件index.js中通过参数event.detail.value来获取传递参数并赋值给parCount:

Page({
  data: {
    parCount:2
   },
   // 自定义父组件函数
   transferFucntion(event){
    console.log("父组件中传参事件触发!"),
    console.log(event.detail),
    this.setData({
      parCount:event.detail.value
    })
  }
  }
)


最终实现效果,点击按钮,子组件中subCount与parCount同步变化.

9d60ca614ee3008bbf8f5ce40592d227_34026f5f92c944ca978d12ed457e9b79.png

4.获取组件对象实例:父组件获取子组件实例对象进行参数传递


   父组件中使用this.selectComponent('子组件id选择器或是class选择器)进行获取子组件实例,进而传递参数到子组件.

演示示例:

   父组件index.wxml中创建点击事件获取子组件test中subCount值以及调用子组件的subCountAdd方法(subCount与subCountAdd均在上个案例中定义过)

   index.wxml中创建点击事件selectSubCompnet并给子组件test设置id属性和class属性:

<test id="subCompnetId" class="subCompnetClass"></test>
<button type="primary" bindtap="selectSubCompnet">点击获取子组件</button>


index.js中点击事件获取子组件实例并获取子组件属性和方法并调用:

Page({
  // 父组件选择子组件
  selectSubCompnet(){
    const subCompnet=this.selectComponent('#subCompnetId');
    console.log("subCount值:"+subCompnet.data.subCount);
    subCompnet.subCountAdd();
    console.log("调用子组件subCountAdd方法之后subCount值:"+subCompnet.data.subCount);
  }
})


点击按钮并观察控制台输出内容:

1ecc4fd779d485ac1acae5662759e986_340832630a3c480cbe7f3b8b59019173.png

观察可以发现子组件subCount与subCountAdd方法均被调用;使用this.setDate即可更改子组件属性.


相关文章
|
14天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
53 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
移动开发 小程序 测试技术
自定义多级联动选择器指南(uni-app)
在本文中,探讨了如何在uni-app中创建自定义多级联动选择器组件。这个组件具有强大的多端支持,可适用于H5、APP、微信小程序、支付宝小程序等多种平台。
34 1
自定义多级联动选择器指南(uni-app)
|
1月前
|
JavaScript 前端开发 UED
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
77 9
|
1月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
197 1
|
1月前
|
存储 API 数据库
uniapp APP自动更新组件
uniapp APP自动更新组件
67 1
|
1月前
|
小程序 JavaScript 前端开发
uni app 入门
uni app 入门
34 2
|
1月前
|
存储 前端开发 UED
uni-app:基础组件 (下)
本文介绍了多种前端组件及其用法,包括:label 组件用于表单元素的标签;picker 组件用于实现日期、时间及普通列表的选择器;textarea 组件用于输入多行文本,并可通过 v-model 双向绑定数据;process 组件用于显示进度条;swiper 组件用于轮播图展示;match-media 组件根据屏幕尺寸展示内容;audio 组件用于播放音频;switch 组件用于开关选择;scroll-view 组件实现滚动视图功能;以及 storage 的使用方法,如设置、获取和移除本地存储等。
|
1月前
|
存储 前端开发 JavaScript
uni-app:基础组件 (上)
本文介绍了uni-app中多个组件的使用方法,包括存储操作、图标展示、按钮样式、表单输入、导航跳转和输入框控制等。通过具体代码示例展示了如何设置存储键值、使用不同类型的按钮、实现表单提交与重置功能、控制输入框的显示与清除等功能。
|
1月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
505 7
|
1月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
602 1

热门文章

最新文章

下一篇
无影云桌面