收藏
回答

组件间关系 relations的一些疑惑

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug 组件间关系 客户端 7.0.4 2.7.0

两个自定义组件产生关联必须要像下面的结构吗

<custom-ul>
  <custom-li> item 1 </custom-li>

 <custom-li> item 2 </custom-li>

</custom-ul>

像简单的单选框/多选框采用这样的结构没什么问题,但有时候会出现子组件作为另外一个组件的slot。这个时候结构就变了


<custom-ul>

 <other-com>

   <custom-li> item 1 </custom-li>

</other-com>

<other-com>

   <custom-li> item 2 </custom-li>

</other-com>

</custom-ul>

这样的结构是relations无法生效的。是不是这种设计组件的思想不对。请指正。

还是应该将结构改成这样

<custom-ul>

 <custom-li>

  <other-com></other-com>

 </custom-li>

 <custom-li>

  <other-com></other-com>

 </custom-li>

</custom-ul>


回答关注问题邀请回答
收藏

1 个回答

  • 小程序技术专员-LastLeaf
    小程序技术专员-LastLeaf
    2019-06-11

    relations 的 type 可选值有四个: parent / child / ancestor / descendant 。前两个表示父子节点关系;后两个表示祖先后代节点关系。你的情况选后两个就可以了。

    2019-06-11
    赞同 1
    回复 12
    • 莫晋铭
      莫晋铭
      2019-06-13

      relations 产生链接后,linked 函数 得到的target 只有组件的一些简单函数,没有自己写在组件的自定义函数。


      准确来说写在method的方法都得不到,但好像直接写在外面的方法能得到。

      是不是父子组件,父组件想调用子组件的内部方法不用采用relations的方式调用,只能根据id获取到子组件才能调用

      2019-06-13
      回复
    • 小程序技术专员-LastLeaf
      小程序技术专员-LastLeaf
      2019-06-13回复莫晋铭
      1. 通过 relations 取到的 this 就是对应目标节点的 this ,不会有 method 拿不到的情况。请再确认一下。

      2. selectComponent 取 id 的方法是无法取到节点的子孙节点的,它只能取到组件 WXML 内部的节点

      2019-06-13
      回复
    • 莫晋铭
      莫晋铭
      2019-06-13回复小程序技术专员-LastLeaf

      看到控制台没输出,我以为取不到,后面试了下还是能取到的

      2019-06-13
      回复
    • 小程序技术专员-LastLeaf
      小程序技术专员-LastLeaf
      2019-06-13回复莫晋铭

      组件的通用方法和自身方法是在原型链的不同位置上的,看控制台其实比较容易看错。

      2019-06-13
      回复
    • 莫晋铭
      莫晋铭
      2019-06-13回复小程序技术专员-LastLeaf

      relations 产生连接时,能不能取得到子组件的offset。就是点击事件产生的


      类似这种

      2019-06-13
      回复
    查看更多(7)
登录 后发表内容