收藏
回答

[需求]自定义组件Component实例间通讯

问题模块
API和组件

经常会有一种需求,同一个组件多个实例之间可以进行消息通知,以便维护或传递状态,举两个具体的场景例子:


场景1:类似Radio具有互斥行为的组件。页面会实例化多个这样的组件,选择其中一个,其他的都变成未选中状态


场景2:做一个语音播放条(脑补微信聊天对话框的样子),当某个播放条在播放音频的时候,显示一个动态的小喇叭gif,其他的播放条应该显示一个静态的小喇叭。这个行为的维护,需要在一个播放条播放的时候,通知所有其他播放条:“如果有人是gif,赶快换成静态的图片”


在目前组件的机制下,我不知道如何实现?如果不能实现,希望今后组件能升级支持一下,这个场景还是非常常见的,因为之所以做组件,就是因为两个原因,要么是多个页面要重复用,要么就是同一个页面里要多次用,而同一个页面的情况经常会有维护组件状态关系的需求。


最好的是有个事件广播的机制,这样可以用this关键词来维护;如果实在不行,能不能搞个GlobalData,提供一个setGlobalData方法,然后GlobalData可以作为wxml的数据源输出,这样也可以实现好多需求。



最后一次编辑于  2017-11-14  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

6 个回答

  • 棉花糖
    棉花糖
    2018-02-06

    @红色星星 同问,希望出个博文分享下,我使用官网的示例,并未获取到custom-li的nodes节点

    2018-02-06
    赞同
    回复
  • alipay
    alipay
    2017-12-12

    @红色星星 这种需求如何解决呀, 看文档不懂。。求助

    2017-12-12
    赞同
    回复
  • 红色星星
    红色星星
    2017-11-17

    @LastLeaf


    收到,谢谢~~~

    2017-11-17
    赞同
    回复
  • 小程序技术专员-LastLeaf
    小程序技术专员-LastLeaf
    2017-11-16

    我们现在开放了组件间关系接口,你可以试一下。

    2017-11-16
    赞同
    回复
  • 红色星星
    红色星星
    2017-11-15

    @LastLeaf


    你好,非常感谢,用behavior搞定了!!!


    现在就等小程序版本库升级修复那几个BUG了,我们把之前用template拼的大部分模块都组件化了,非常好用!!!

    2017-11-15
    赞同
    回复
  • 小程序技术专员-LastLeaf
    小程序技术专员-LastLeaf
    2017-11-14

    感谢你的建议。

    a) 我们有一组未开放的API,可以用于实现类似于内置组件 radio-group / radio 、 form / input 的交互,之后会开放。

    b) 全局的广播机制与目前的模块模型设计有冲突,目前不会添加这类功能。其实你可以用behavior来实现这个功能的。


    2017-11-14
    赞同
    回复