钉钉小程序父组件调用子组件方法(钉钉小程序踩坑实录)

钉钉小程序父组件调用子组件方法

  • 页面到底部,父组件触发,调用子组件的方法,加载子组件的数据

解决方法

  • 子组件里:

     didMount() {
        this.$page.childComponent = this
      },
    

    在加载生命周期里添加指向,childComponent就是名字,在你的父组件里才能找到。

  • 子组件方法:

    methods: {
    	childMethods(){
    		console.log("hello")
    	}
    }
    

    子组件的方法就是正常写,也就是我们即将在父组件里调用的方法

  • 父组件里:

     /**
       * 页面被拉到底部
       * */
    
      onReachBottom() {
        this.childComponent.childMethods()	//调用的子组件的方法
      },
    

父组件和子组件之间,怎么相互调用传值?

在小程序 page 页面,自定义组件可以通过 this.$page 拿到小程序页面实例,然后将组件实例挂载到小程序页面实例上进行相互调用。

  1. 将父组件、子组件分别挂载到所属页面实例上。
  // 父组件 - /component/fu/fu.js
didMount() {
    this.$page.fu = this; // 通过此操作可以将组件实例挂载到所属页面实例上
  },
//子组件 - /component/zi/zi.js
didMount() {
    this.$page.zi = this; // 通过此操作可以将组件实例挂载到所属页面实例上
  },
  1. 通过页面实例实现相互调用。

小程序页面调用父组件、子组件方法:

//调用组件内 method 方法  
this.zi.zimethod()
this.fu.fumethod()
//更改组件内data值
this.fu.setData({
      test:'123'
    })
 this.zi.setData({
      test:'123'
    })

父组件调用子组件内方法:

//调用子组件method方法
this.$page.zi.zimethod()
更改子组件内data值
 this.$page.zi.setData({
      test:'123'
    })

子组件调用父组件内方法 :

//调用父组件method方法
this.$page.fu.zimethod()
更改父组件内data值
 this.$page.fu.setData({
      test:'123'
    })

以下为解决问题的路程(骂人路程,可忽略不看)

  • 钉钉文档写的真的一言难尽,有兴趣可以去观摩观摩,出自大师之手,真的看不懂:神仙钉钉文档
  • 网络上查询只有一篇文章是写这个的,(唯一的文章)其他的都是天下文章一大抄,标题写父子通信,好家伙都只写子组件传值给父组件,完了父组件传值子组件都被吃了。
  • 上面这个一篇文章提供的思路不错,但是传this过来之后再调用方法,方法的this是指向父组件的,无法指向子组件,所以这个方法只能说在父组件里调用方法,子组件里的data数据都无法使用。
  • 最后说一句,支付宝小程序文档YYDS!当你钉钉有问题时你就去支付宝吧!那里才是你永远的家。
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
钉钉小程序中,组件如何调用组件方法有多种方法。可以使用以下三种方式来实现: 1. 在组件中通过组件选择器调用组件方法: 在组件方法中使用`this.selectComponent()`方法获取到组件的实例,然后再调用组件方法。示例代码如下: ``` // 组件调用组件方法 const childComponent = this.selectComponent('#childComponentId'); childComponent.childMethod(); ``` 2. 在组件中通过事件触发组件方法: 在组件中定义一个自定义事件,然后在组件中通过`bind`关键字绑定该事件,并在事件回调函数中调用组件方法。示例代码如下: 在组件中: ``` // 组件定义自定义事件 Component({ methods: { childMethod() { // 组件方法逻辑 } } }) ``` 在组件中: ``` <!-- 组件模板中绑定组件的自定义事件 --> <child-component bind:customEvent="parentMethod"></child-component> // 组件中定义事件回调函数 const parentMethod = () => { // 组件方法逻辑 } ``` 3. 在组件中使用`this.selectComponent()`获取到组件实例,在组件中定义一个方法可以供组件调用。示例代码如下: 在组件中: ``` // 组件定义方法组件调用 Component({ methods: { childMethod() { // 组件方法逻辑 } } }) ``` 在组件中: ``` // 组件调用组件方法 const childComponent = this.selectComponent('#childComponentId'); childComponent.childMethod(); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值