SAP Spartacus Unit List树形数据的加载触发时机
數(shù)據(jù)加載的url:
https://spartacus-dev0.eastus.cloudapp.azure.com:9002/occ/v2/powertools-spa/users/current/orgUnitsRootNodeTree?lang=en&curr=USD
第三行觸發(fā)listData$的讀取:
pipeInstance.transform的輸入?yún)?shù)是一個(gè)Observable:
this.service.hasGhostData
從上圖Observable對象的屬性里能找到該Observable的生成邏輯:
async pipe的transform方法實(shí)現(xiàn):
Async pipe的transform方法就是簡單的調(diào)用subscribe方法:
action類型:[B2BUnitNode] Load Tree
最后在org-unit.effect.ts里發(fā)起org unit數(shù)據(jù)的讀取請求:
@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()的實(shí)現(xiàn),相當(dāng)于一個(gè)橋梁的作用,用ofType表明接收何種類型的Actions,調(diào)用map將action payload里包含的輸入?yún)?shù)提取出來,使用switchMap根據(jù)輸入?yún)?shù)進(jìn)行耗時(shí)間的網(wǎng)絡(luò)請求,最后將網(wǎng)絡(luò)請求獲取的結(jié)果再通過map操作符,構(gòu)造一個(gè)LoadTreeSuccess的action payload:
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的SAP Spartacus Unit List树形数据的加载触发时机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于正则表达式在线测试工具的开发总结
- 下一篇: 新开始,新记录,新征程