我们知道在 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 里如何捕捉语言设置的更改相关推荐

  1. 在 SAP 电商云 Spartacus UI 里手动注入 module 的几种排列组合

    先把所有的排列组合罗列如下: (1) 通过构造函数注入 QuickOrderFacade,但不调用其方法 (2) 通过构造函数注入 QuickOrderFacade,调用其方法 (3) 手动通过 in ...

  2. 如何在 SAP 电商云 Spartacus UI 里新建一个页面

    因为 SAP Spartacus UI 是基于 CMS 驱动的,因此流程是:我们首先在 SAP Commerce Cloud Backoffice 创建新的 content page, CMS Com ...

  3. 如何在 SAP 电商云 Spartacus UI 里访问 CMS Component data 数据

    答案是采用 CmsComponentData 这个服务. 看个实际例子: CmsQuickOrderComponent 的定义,维护在 models 文件夹里: 运行时,只能访问到上图新 extend ...

  4. 在 SAP 电商云 Spartacus UI 里使用自定义配置控制 UI 调试的开关

    在 page-slot.module.ts 里,定义一个配置对象 ConfigUIDebug. 这个配置对象定义在 cms-component-data.ts 的 ConfigUIDebug 对象里, ...

  5. SAP 电商云 Spartacus UI 里的 InjectionToken 应用场景

    看个具体的例子: InjectionToken 构造函数,需要传一个类型参数进去. 这个 ActionReducerMap 的定义很讲究: export declare type ActionRedu ...

  6. SAP 电商云 Spartacus UI 单元测试的依赖隔离设置举例

    看一个具体的例子: DeliveryModeComponent,依赖到的一个服务为 CheckoutDeliveryFacade,其实现类为 CheckoutDeliveryService. 因此,在 ...

  7. SAP 电商云 Spartacus UI ComponentDataProvider defer 工厂函数

    为什么 this.componentService.getItems 最后就触发到 Component-data.provider.ts 工厂函数的执行了? 29行的 getService: getS ...

  8. SAP 电商云 Spartacus UI 产品搜索结果的设计明细

    我们使用如下 url 访问 SAP 电商云 Spartacus UI 产品搜索页面: http://localhost:4000/electronics-spa/en/USD/search/sony ...

  9. Mobile first 设计思路在 SAP 电商云 Spartacus UI 中的设计体现一例

    关于 Mobile First 的概念,请查看我这篇文章:什么是前端开发中的 mobile first 策略. 下图是 SAP 电商云 Spartacus UI 的搜索结果页面: 其布局设计:temp ...

最新文章

  1. Java性能优化(3):通过私有构造函数强化不可实例化的能力
  2. 四川300家旅游企业将用上阿里云
  3. 统计特性和概率估计-1 (数学推导与证明)
  4. 多个常见代码设计缺陷
  5. 从零开始-小程序采坑记录
  6. P4103 [HEOI2014]大工程
  7. (转)Some awareness before migrating from x86 to x64
  8. python-容器数据类型-知识小结
  9. MySQL 的三大引擎:InnoDB、MyISAM和Memory
  10. 关于shell读取文件打印时展开通配符
  11. 机器人把大龙拉出来_LOL-LPL夏季赛:Wei男枪打野未换惩戒 ES让BLG拿下首胜
  12. BZOJ 1030 [JSOI2007]文本生成器(ac自动机+dp)
  13. Windows程序设计学习-API-SetBkMode
  14. java监控gc线程_Java应用性能监控系统,使用JMX实现,实现了类加载监控、内存监控、线程监控、GC监控...
  15. 关关采集器规则编写教程(最详细的教程)
  16. python删除一行代码_python基础教程:python3.7 openpyxl 删除指定一列或者一行的代码...
  17. 【iOS】遍历相册照片
  18. IDEA设置输入忽略大小写
  19. 如何在三天内使用Thinkphp搭建商城系统(一)
  20. wxPython安装教程

热门文章

  1. 如何实现文件增量同步——算法
  2. Java网络编程从入门到精通(21):HTTP消息的格式
  3. 【REACT NATIVE 系列教程之十三】利用LISTVIEW与TEXTINPUT制作聊天/对话框获取组件实例常用的两种方式...
  4. CentOS7使用nmcli实现网络日常管理及多网卡bond
  5. 评奖.婚礼及“形而上”
  6. UCMap移动GIS 时空地图GIS
  7. 翻译:集群索引:通往SQL Server索引级别3的阶梯
  8. (原+转)ubuntu中删除文件夹
  9. [转]notepad++ java编码,输出中文字符时,编译出错
  10. linux查看最近修改过的文件