SAP 電商雲 Spartacus 產品明細頁面的 OCC API 是如何被觸發的
阿新 • • 發佈:2021-10-27
當訪問如下 url 時,
http://localhost:4200/powertools-spa/en/USD/jerryproduct/3755211/PSR 10.8 LI
我們能看到如下的 OCC API 呼叫:
https://
這個 OCC API 是 cms-page.connector.ts 觸發的。Connector 肯定是 effect 呼叫的,呼叫時,pageContext 已經解析完畢了。這個 type 為 ProductPage 是如何解析的?
加上列印語句:
果然是被 page effect 呼叫的:
檢查是誰丟擲的 CmsActions.LoadCmsPageData 即可。
在 page action 的建構函式裡打斷點,就知道誰去 dispatch 的這個 action 了:
看樣子我們要在 cms.service.ts 的 hasPage 方法裡繼續設定斷點了:
這裡找到了源頭:我們之前的文章已經介紹過,把 url 貼上到瀏覽器位址列之後,會觸發 Angular 路由器框架 Router 的檢測邏輯,如果 url 的片段確實是 RouterModule.forChild 裡傳入的 routes 陣列的片段時,說明路由匹配成功,此時需要執行該路由的 canActivate 鉤子,只有鉤子返回 true,才能真正啟用這個路由,載入 route 資料結構裡維護的 Component 例項。
上圖解釋了本文標題的疑問。
更多Jerry的原創文章,盡在:"汪子熙":