当前位置: 首页 > Web前端 > HTML

SAP电商云SpartacusUI的DeliveryMode设计

时间:2023-03-28 01:03:08 HTML

本文在讨论SpartacusUI结账流程时,下图中高亮显示的两种DeliveryMode,DeliveryMode的数据来源:从模板文件可以看出component中,这些radioinput的数据来自于Observable对象supportedDeliveryModes$:后者是通过服务类checkoutDeliveryService的getSupportedDeliveryModes获得的。对应的HTTP请求为:https://localhost:9002/occ/v2...supportedDeliveryModes$订阅后会触发其pipe方法传入的一系列Operator:此时deliverymodes还是空的:if为空,过滤器执行后结束。后来后台读取deliverymodes后:最后通过filter和distinctUntilChanged的deliverymodes被模板的async解析出来:再看getSelectedDeliveryMode:第一次触发时,deliveryMode为null。第二个触发器:pipe有管道功能,连接多个operator:接下来我们要搞清楚的是这个premium-gross默认是怎么选的?它的值来自于另一个ObservablewithLatestFrom的贡献:this.checkoutDeliveryService.getSelectedDeliveryMode:deliveryMode的选中状态,通过selected标志来区分。这些数据都来自于CheckoutStepsState,存储在ngrxstore中:在checkout.reducer.ts的第88行和175行设置断点:调试后发现第175行的代码先被触发:对应的HTTP请求是:https://localhost:9002/occ/v2...(FULL),deliveryMode,paymentInfo(FULL)&lang=en&curr=USD选择的交付模式存储在购物车模型上:读取支持的交付模式是通过checkout.effect.ts:Spartacus4.0引入了checkout库。与结帐相关的代码已从@spartacus/core和@spartacus/storefrontlib移出并移至新结帐库的入口点之一。checkout库分为以下入口点:@spartacus/checkout/assets:与国际化相关的资产。@spartacus/checkout/components:相关UI组件、守卫和UI服务。@spartacus/checkout/corecheckout门面API实现,包括连接器、事件生成器、事件监听器、模型、其他服务和状态管理。@spartacus/checkout/occcheckout相关的适配器和转换器。@spartacus/checkout/rootroot实体总是由预加载加载。包含config、events、facades、http拦截器和models。@spartacus/checkout/styles和checkout相关的scss文件。更多Jerry原创文章在这里:《王子熙》: