Subject 在 SAP Spartacus Popover Component 中的应用

举报
汪子熙 发表于 2022/06/29 20:37:14 2022/06/29
【摘要】 Subject 是 Rxjs 里的一个工具对象。Subject 是一种特殊类型的 Observable,它允许将值多播到许多观察者。 Subject 就像 EventEmitters。每个 Subject 都是 Observable 和 Observer。 您可以订阅一个主题,您可以调用 next 提要值以及错误和完成。这个属性定义在 Popover Component 上:其赋值操作发生在...

Subject 是 Rxjs 里的一个工具对象。

Subject 是一种特殊类型的 Observable,它允许将值多播到许多观察者。 Subject 就像 EventEmitters。

每个 Subject 都是 Observable 和 Observer。 您可以订阅一个主题,您可以调用 next 提要值以及错误和完成。

这个属性定义在 Popover Component 上:

其赋值操作发生在 Popover Directive 的代码里:

当 Popover Component 的 Close 按钮被鼠标或者键盘触发时,触发注册好的 close 事件处理函数:

在 close 事件处理函数里,通过 Subject 向其监听者广播 CLOSE_BUTTON_CLICK 或者 CLOSE_BUTTON_KEYDOWN 事件。

在 Popover Directive 里定义了所有能够触发 Popover Component 关掉的事件,如上图所示。

Popover Directive 是这些事件的监听者。

这里有两个问题:

  1. handlePopverEvents 什么时候被谁调用?
  2. 为什么是 Directive 的 close 函数负责关闭 Popover Component?

对于第一个问题,这里能看出端倪了:Popover Directive 的 eventSubject 负责监听事件,然后这个 eventSubject 实例赋给 Component 实例,后者负责发送事件:

close 操作:

如果注释掉上图第155行,则无法关闭 Popover Component 了:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。