SAP Spartacus Unit List树形数据的加载触发时机
數據加載的url:
https://spartacus-dev0.eastus.cloudapp.azure.com:9002/occ/v2/powertools-spa/users/current/orgUnitsRootNodeTree?lang=en&curr=USD
第三行觸發listData$的讀取:
pipeInstance.transform的輸入參數是一個Observable:
this.service.hasGhostData
從上圖Observable對象的屬性里能找到該Observable的生成邏輯:
async pipe的transform方法實現:
Async pipe的transform方法就是簡單的調用subscribe方法:
action類型:[B2BUnitNode] Load Tree
最后在org-unit.effect.ts里發起org unit數據的讀取請求:
@Effect()loadTree$: Observable<OrgUnitActions.LoadTreeSuccess | OrgUnitActions.LoadTreeFail> = this.actions$.pipe(ofType(OrgUnitActions.LOAD_UNIT_TREE),map((action: OrgUnitActions.LoadOrgUnit) => action.payload),switchMap(({ userId }) => {return this.orgUnitConnector.getTree(userId).pipe(map((orgUnit: B2BUnitNode) => new OrgUnitActions.LoadTreeSuccess(orgUnit)),catchError((error: HttpErrorResponse) =>of(new OrgUnitActions.LoadTreeFail({error: normalizeHttpError(error),}))));}));加了注解@Effect()的實現,相當于一個橋梁的作用,用ofType表明接收何種類型的Actions,調用map將action payload里包含的輸入參數提取出來,使用switchMap根據輸入參數進行耗時間的網絡請求,最后將網絡請求獲取的結果再通過map操作符,構造一個LoadTreeSuccess的action payload:
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的SAP Spartacus Unit List树形数据的加载触发时机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于正则表达式在线测试工具的开发总结
- 下一篇: 如何对SAP Spartacus支持路由