自定义组件关系声明无效

发布于 7 年前作者 ming5510125 次浏览最后编辑 7 年前来自 ask

同一个父目录下有两个自定义组件,而这两个自定义组件的代码又各放在一个独立目录中,为其声明了 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 回复
leiyan
leiyan1 楼6 年前

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

<component_a>

<component_b></component_b>

</component_a>

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

gang01
gang012 楼6 年前

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

fhou
fhou3 楼6 年前

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

yiqiang
yiqiang4 楼6 年前

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

ylu
ylu5 楼6 年前

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

guona
guona6 楼6 年前

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

mingfeng
mingfeng7 楼5 年前

这是 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&amp;lang=zh\_CN&amp;token=481460654&amp;docid=0008e4530ec9d8929f76dd14756400&amp;comment\_lvl=1