SAP Spartacus B2B Org Unit List节点展开的递归逻辑实现

简介: SAP Spartacus B2B Org Unit List节点展开的递归逻辑实现

Rustic Services有两个子节点,点击之后,触发toggle方法:



image.png


子节点分别是Services East和Services West:

image.png


this.treeToggle$是一个BehaviorSubject:

image.png



toggle执行后,执行next方法,通知subscriber:


image.png


我想知道的是这个Mapsubscriber是什么时候订阅的:


可以在Chrome调试器里找到Mapsubscriber的方法实体project:() => tree, 然后作为关键字在Visual Studio Code里搜索:



这个value包含的值,应该就是整棵tree, 即() => tree的执行结果:



image.png


image.png


重新对整棵树进行排序:


image.png

首先把整个完整的tree节点加到values数组里:


image.png


然后递归处理第一个子节点Rustic Services:


image.pngimage.png



将该子节点,Rustic Services,插入到values数组里,因为递归进入convertListItem, values数组已经重新初始化了:

image.png



此处准备再次进入Rustic Services的子节点Services East的递归处理逻辑:


image.png


因为Servies East没有子节点了,所以跳过74行forEach的执行:


image.png


出栈,返回包含Servies East单个元素的数组:


image.png


以及计数器3:因为我们总共touch了三个树节点:root,Rustic Services和Services East:

image.png



当前执行上下文里,处理的节点是Rustic Services,处理的子节点为Services East,第75行convertListItem返回的values数组包含的值是Services East的数据,而原有的values,包含的数据是Rustic Services的值:


image.png


同样,下一步处理Services West这个子节点:


image.png


至此,Rustic Services本身及其子树已经处理完毕。values数组总共包含三个元素:


image.png


所以我们能够看出,这是一个深度优先遍历策略:


image.png


image.png


最后的处理结果:

image.png

image.png

相关文章
|
6月前
|
缓存
关于 Spartacus ProdutList Component Service model$ 的填充逻辑
关于 Spartacus ProdutList Component Service model$ 的填充逻辑
29 0
|
2月前
|
XML 存储 JavaScript
关于 SAP Fiori Elements List Report 里的 TableCell.fragment.xml 头部声明
关于 SAP Fiori Elements List Report 里的 TableCell.fragment.xml 头部声明
22 0
|
3月前
|
存储 缓存 前端开发
关于 SAP Spartacus Optimization Engine 里的 cache 参数使用注意事项
关于 SAP Spartacus Optimization Engine 里的 cache 参数使用注意事项
20 0
|
3月前
|
JSON 开发者 数据格式
关于 SAP Spartacus LandingPage2Template 区域的 layout 设计实现
关于 SAP Spartacus LandingPage2Template 区域的 layout 设计实现
26 0
|
3月前
|
搜索推荐 开发者 UED
关于 SAP Spartacus 层的 UI 设计
关于 SAP Spartacus 层的 UI 设计
40 0
|
3月前
|
开发者 UED
SAP Spartacus BREAKPOINT 枚举类型在 Spartacus layout 实现中的作用
SAP Spartacus BREAKPOINT 枚举类型在 Spartacus layout 实现中的作用
24 0
|
6月前
|
前端开发
Spartacus 应用中 Lazy Loaded Module 初始化逻辑的实现方案
Spartacus 应用中 Lazy Loaded Module 初始化逻辑的实现方案
33 0
|
6月前
|
JavaScript 数据处理
combineLatest 操作符在 Spartacus Cost Center 计算逻辑中的一个实际应用
combineLatest 操作符在 Spartacus Cost Center 计算逻辑中的一个实际应用
23 0
|
1月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
27 0
|
1月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
15 0