SAP Spartacus checkout Shipping address的页面实现
时间:2022-07-26
本文章向大家介绍SAP Spartacus checkout Shipping address的页面实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
shipping address维护页面的id:/checkout/shipping-address:
后台cms的请求:
layout实现:
<ng-container *ngIf="cards$ | async as cards">
<h3 class="cx-checkout-title d-none d-lg-block d-xl-block">
{{ 'checkoutAddress.shippingAddress' | cxTranslate }}
</h3>
<ng-container *ngIf="!forceLoader && !(isLoading$ | async); else loading">
<ng-container
*ngIf="
isAccountPayment || (cards?.length && !addressFormOpened);
else newAddressForm
"
>
<p class="cx-checkout-text">
{{ 'checkoutAddress.selectYourShippingAddress' | cxTranslate }}
</p>
<div class="cx-checkout-btns row" *ngIf="!isAccountPayment">
<div class="col-sm-12 col-md-12 col-lg-6">
<button
class="btn btn-block btn-action"
(click)="showNewAddressForm()"
>
{{ 'checkoutAddress.addNewAddress' | cxTranslate }}
</button>
</div>
</div>
<div class="cx-checkout-body row">
<div
class="cx-shipping-address-card col-md-12 col-lg-6"
*ngFor="let card of cards; let i = index"
>
<div
class="cx-shipping-address-card-inner"
(click)="selectAddress(card.address)"
>
<cx-card
[border]="true"
[fitToContainer]="true"
[content]="card.card"
(sendCard)="selectAddress(card.address)"
></cx-card>
</div>
</div>
</div>
<div class="cx-checkout-btns row">
<div class="col-md-12 col-lg-6">
<button class="cx-btn btn btn-block btn-action" (click)="back()">
{{ backBtnText | cxTranslate }}
</button>
</div>
<div class="col-md-12 col-lg-6">
<button
class="cx-btn btn btn-block btn-primary"
[disabled]="!selectedAddress?.id"
(click)="next()"
>
{{ 'common.continue' | cxTranslate }}
</button>
</div>
</div>
</ng-container>
<ng-template #newAddressForm>
<cx-address-form
*ngIf="cards.length; else initialAddressForm"
[showTitleCode]="true"
(backToAddress)="hideNewAddressForm(false)"
(submitAddress)="addAddress($event)"
></cx-address-form>
<ng-template #initialAddressForm>
<cx-address-form
[showTitleCode]="true"
[setAsDefaultField]="!isGuestCheckout"
[addressData]="selectedAddress"
cancelBtnLabel="{{ backBtnText | cxTranslate }}"
(backToAddress)="hideNewAddressForm(true)"
(submitAddress)="addAddress($event)"
></cx-address-form>
</ng-template>
</ng-template>
</ng-container>
<ng-template #loading>
<div class="cx-spinner">
<cx-spinner></cx-spinner>
</div>
</ng-template>
</ng-container>
这个ng-container里的else loading中的loading是一个template的id:
这个cx-spinner是一个reuse的转盘动画控件:
显示的时候,UI被锁住,continue按钮不可见。
Next按钮的实现:在next函数里
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
- Volatile实现原理实现原子性happens-before关系从happends-before规则分析可见性编译器层面实现可见性处理器层面实现可见性
- java中的toString方法
- 简单可视化-送你一双发现美的眼睛
- 享元模式
- 揭秘:针对中国移动用户的强大网银木马剖析
- 从源代码到Runtime发生的重排序编译器重排序指令重排序内存系统重排序阻止重排序
- 内存屏障保证缓存一致性优化
- 最新XSS 0day漏洞来袭,影响最新版本IE浏览器(含POC)
- Java内存模型—JMMhappens-before规则
- 那些年我们一起用过的Hybrid App
- 来看看美帝人民的安全意识:安全研究人员指责iOS版Outlook存在多处安全隐患
- 不是原配也可以-对接非原生配体
- oj放苹果
- 漏洞追踪:最新IE UXSS漏洞技术分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Go_学习之Docke容器
- zabbix 监控项
- [PyQt Tutorial]4.使用Qt Designer
- [PyQt Tutorial]5.Signals & Slots(信号与槽)
- Docker数据共享与持久化
- [PyQt Tutorial]6.Layout Management(布局管理)
- Kubernetes入门
- [PyQt Tutorial]7.QDialog 类
- kubeadm快速部署kubernetes集群
- [PyQt Tutorial]8.QMessageBox
- Tomcat_01_简介
- Tomcat调优
- Tomcat_02_应用部署
- Tomcat_03_监控
- Kubernetes常用命令