SAP 电商云 Spartacus UI 里如何捕捉语言设置的更改
我们知道在 SAP 电商云 Spartacus UI 里,用户可以通过下拉菜单更改当前访问 site 的语言:
监控语言变化的代码:
this.subscription.add(this.languageService.getActive().subscribe((isoCode: string) =>this.setDirection(this.winRef.document.documentElement,this.getDirection(isoCode))));
这里的 get active,拿的其实是 active language:
从 ngrx store 里读取语言:
切换语言时发生了什么事情?
找到触发源:
在 Angular UI 里找到了 select 控件的 change 事件的响应处理逻辑:
等号右边是一个表达式:active = $event.target.value;
active 就是 Component 的属性,将 $event 的 target 的 value 字段值(即用户当前选中的语言)赋给 Component active 属性。
active 是 Component 的属性。
Component 将控制权交给 service:
根据不同的 context 拿到 service:
精髓在于,返回的是 Observable 对象:
等到 subscribe 调用时才触发:
更多Jerry的原创文章,尽在:“汪子熙”:
SAP 电商云 Spartacus UI 里如何捕捉语言设置的更改相关推荐
- 在 SAP 电商云 Spartacus UI 里手动注入 module 的几种排列组合
先把所有的排列组合罗列如下: (1) 通过构造函数注入 QuickOrderFacade,但不调用其方法 (2) 通过构造函数注入 QuickOrderFacade,调用其方法 (3) 手动通过 in ...
- 如何在 SAP 电商云 Spartacus UI 里新建一个页面
因为 SAP Spartacus UI 是基于 CMS 驱动的,因此流程是:我们首先在 SAP Commerce Cloud Backoffice 创建新的 content page, CMS Com ...
- 如何在 SAP 电商云 Spartacus UI 里访问 CMS Component data 数据
答案是采用 CmsComponentData 这个服务. 看个实际例子: CmsQuickOrderComponent 的定义,维护在 models 文件夹里: 运行时,只能访问到上图新 extend ...
- 在 SAP 电商云 Spartacus UI 里使用自定义配置控制 UI 调试的开关
在 page-slot.module.ts 里,定义一个配置对象 ConfigUIDebug. 这个配置对象定义在 cms-component-data.ts 的 ConfigUIDebug 对象里, ...
- SAP 电商云 Spartacus UI 里的 InjectionToken 应用场景
看个具体的例子: InjectionToken 构造函数,需要传一个类型参数进去. 这个 ActionReducerMap 的定义很讲究: export declare type ActionRedu ...
- SAP 电商云 Spartacus UI 单元测试的依赖隔离设置举例
看一个具体的例子: DeliveryModeComponent,依赖到的一个服务为 CheckoutDeliveryFacade,其实现类为 CheckoutDeliveryService. 因此,在 ...
- SAP 电商云 Spartacus UI ComponentDataProvider defer 工厂函数
为什么 this.componentService.getItems 最后就触发到 Component-data.provider.ts 工厂函数的执行了? 29行的 getService: getS ...
- SAP 电商云 Spartacus UI 产品搜索结果的设计明细
我们使用如下 url 访问 SAP 电商云 Spartacus UI 产品搜索页面: http://localhost:4000/electronics-spa/en/USD/search/sony ...
- Mobile first 设计思路在 SAP 电商云 Spartacus UI 中的设计体现一例
关于 Mobile First 的概念,请查看我这篇文章:什么是前端开发中的 mobile first 策略. 下图是 SAP 电商云 Spartacus UI 的搜索结果页面: 其布局设计:temp ...
最新文章
- Java性能优化(3):通过私有构造函数强化不可实例化的能力
- 四川300家旅游企业将用上阿里云
- 统计特性和概率估计-1 (数学推导与证明)
- 多个常见代码设计缺陷
- 从零开始-小程序采坑记录
- P4103 [HEOI2014]大工程
- (转)Some awareness before migrating from x86 to x64
- python-容器数据类型-知识小结
- MySQL 的三大引擎:InnoDB、MyISAM和Memory
- 关于shell读取文件打印时展开通配符
- 机器人把大龙拉出来_LOL-LPL夏季赛:Wei男枪打野未换惩戒 ES让BLG拿下首胜
- BZOJ 1030 [JSOI2007]文本生成器(ac自动机+dp)
- Windows程序设计学习-API-SetBkMode
- java监控gc线程_Java应用性能监控系统,使用JMX实现,实现了类加载监控、内存监控、线程监控、GC监控...
- 关关采集器规则编写教程(最详细的教程)
- python删除一行代码_python基础教程:python3.7 openpyxl 删除指定一列或者一行的代码...
- 【iOS】遍历相册照片
- IDEA设置输入忽略大小写
- 如何在三天内使用Thinkphp搭建商城系统(一)
- wxPython安装教程
热门文章
- 如何实现文件增量同步——算法
- Java网络编程从入门到精通(21):HTTP消息的格式
- 【REACT NATIVE 系列教程之十三】利用LISTVIEW与TEXTINPUT制作聊天/对话框获取组件实例常用的两种方式...
- CentOS7使用nmcli实现网络日常管理及多网卡bond
- 评奖.婚礼及“形而上”
- UCMap移动GIS 时空地图GIS
- 翻译:集群索引:通往SQL Server索引级别3的阶梯
- (原+转)ubuntu中删除文件夹
- [转]notepad++ java编码,输出中文字符时,编译出错
- linux查看最近修改过的文件