0
点赞
收藏
分享

微信扫一扫

关于 SAP Spartacus PageMetaService 和 MetaResolver


PageMetaService, 通过项目自定义的类型和自定义注入器,调用 getMulti 方法,获得注入的 Resolvers:

关于 SAP Spartacus PageMetaService 和 MetaResolver_数据

meta$ 的值是 defer 返回的一个 Observable.

defer 里是一个工厂函数。

关于 SAP Spartacus PageMetaService 和 MetaResolver_获取数据_02

当 meta$ 被 subscribe 时,工厂函数才会触发:

关于 SAP Spartacus PageMetaService 和 MetaResolver_自定义_03

工厂函数内部:

关于 SAP Spartacus PageMetaService 和 MetaResolver_自定义_04

getCurrentPage:最后还是从 ​​ngrx​​ store 里获取数据:

关于 SAP Spartacus PageMetaService 和 MetaResolver_sap_05

pageContext 存储在 routingService 中,后者也是从 ​​ngrx​​ store 里获取数据:

关于 SAP Spartacus PageMetaService 和 MetaResolver_数据_06

然后根据 pageContext 获取 page 数据:

关于 SAP Spartacus PageMetaService 和 MetaResolver_自定义_07

关于 SAP Spartacus PageMetaService 和 MetaResolver_数据_08

下图展示了从 ngrx store 里读取的 home page 的数据:

关于 SAP Spartacus PageMetaService 和 MetaResolver_sap_09

注入的 page resolver:

关于 SAP Spartacus PageMetaService 和 MetaResolver_sap_10

因为 home page 是 content page,所以返回 ContentPageMetaResolver:

关于 SAP Spartacus PageMetaService 和 MetaResolver_数据_11

依次遍历每个 resolver,调用其 resolve 方法:

关于 SAP Spartacus PageMetaService 和 MetaResolver_sap_12

以 resolveTitle 为例:

关于 SAP Spartacus PageMetaService 和 MetaResolver_自定义_13

返回的就是其 title$ Observable 对象:

关于 SAP Spartacus PageMetaService 和 MetaResolver_数据_14

title$ 对象的数据源也来自 ngrx store:

关于 SAP Spartacus PageMetaService 和 MetaResolver_获取数据_15



举报

相关推荐

0 条评论