自定义组件关系声明无效
发布于 6 年前 作者 ming55 9994 次浏览 来自 问答

同一个父目录下有两个自定义组件,而这两个自定义组件的代码又各放在一个独立目录中,为其声明了 relations 却没有 link 上。

目录结构如下:

-- components

    |-- component_a

        |-- component_a.js

    |-- component_b

        | -- component_b.js

其中 component_a.js 中 relations 定义如下:


relations: {
  '../component_b/component_b': {

    type: 'child',

    linked: function(target) { console.log(target); }

  }
}


component_b.js 中 relations 为:


relations: {
  '../component_a/component_a': {

    type: 'parent',

    linked: function(target) { console.log(target); }

  }
}

两个组件中的 linked 方法均未执行,当然也不能通过 getRelationNodes 获取到对方。

使用最新开发者工具,最新的调试基础库(换了几个版本的基础库也是同样的问题)。

7 回复

写法都没错,但是用法错了

<component_a>

<component_b></component_b>

</component_a>

只有页面上用这种方式引用组件,才满足 parent/child、ancestor/descendant 的定义

我也想二次封装一个组件,也是同样的写法,试了好久都没效果,结果官方说我们理解不对,唉。

你好,你对 relations 的理解不对。 relations 用于处理父/子节点的关系(类似基础组件中 checkbox-group 和 checkbox),而不是组件/组件使用者的关系。处理组件/组件使用者的关系时,应使用事件系统。请仔细阅读文档。

我们给自定义组件相关章节新加了示例代码片段,有需要的话可以去文档查询(点其中的“在开发者工具中预览效果”即可)。

同样的问题,不知道怎么解决…

你好,请给一下引用这两个自定义组件的wxml代码?

这是 component_a.wxml:

<view wx:for="{{ fields }}" wx:key="id">
  <component-b field-type="{{ item.type }}"></component-b>
</view>

这是 component_b.wxml:

<view>
  {{ fieldType }}
</view>

PS: 我在提问之前也发现有另外一位同学有相同的问题哈,这是相应的链接:https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=481460654&docid=0008e4530ec9d8929f76dd14756400&comment_lvl=1

回到顶部