本文研究如下图高亮所示的 SAP 电商云 Footer 区域的设计明细。

对应的 HTML markdup 入口:cx-footer-navigation:

cx-footer-navigation 只包含了一个单独的节点:cx-navigation-ui

第二行的 node$ 是具体的数据源。

footer slot 包含两个 Components:FooterNavigationComponent

对应的 Angular Component 实现名称:FooterNavigationComponent,其 selector 正是 cx-footer-navigation

这个 Component,使用了另一个 Angular Component:cx-navigation-ui,即 NavigationUIComponent

NavigationUIComponent 里又使用了 cx-generic-link.

这个 NavigationUIComponent 不仅被 footer 使用,在 my account 菜单也被使用。

数据源来自 node

三个 nav node:

node.children 展开的结果:

注意第 12 行 let 的用法。

简写形式:

<div *ngFor="let hero of heroes; let i=index; let odd=odd; trackBy: trackById" [class.odd]="odd">({{i}}) {{hero.name}}
</div>

完整形式:

<ng-template ngFor let-hero [ngForOf]="heroes" let-i="index" let-odd="odd" [ngForTrackBy]="trackById"><div [class.odd]="odd">({{i}}) {{hero.name}}</div>
</ng-template>

在这里,与 ngFor 结构指令相关的所有内容都适用于 <ng-template>。 元素上的所有其他绑定和属性都适用于 <ng-template> 中的 <div> 元素。 宿主元素上的其他修饰符,除了 ngFor 字符串,在元素在 <ng-template> 内移动时保持不变。 在此示例中,[class.odd]=“odd” 保留在\ <div> 上。

let 关键字声明了一个模板输入变量,您可以在模板中引用该变量。 此示例中的输入变量是 hero、i 和奇数。 解析器将 let hero、let i 和 letodd 转换为名为 let-hero、let-i 和 let-odd 的变量。 let-i 和 let-odd 变量变为 let i=index 和 let odd=odd。 Angular 将 i 和 odd 设置为上下文index 和 odd 属性的当前值。

nav 节点下有两层 cx-generic-link

NgForOf 提供了下列默认的 exported values

以递归方式渲染而成:

cx-footer-navigation 下面有三个 nav 节点。

谁调用(消费)的这个 selector?

没有更外层的 HTML wrapper 了:

说明是 CMS 驱动。

footer navigation 打印出的 data:

footer area 打印出的数据:

2,2,4 的 length 正好和 footer 的实际内容吻合:

footer navigation Component 包含 footer content slot:

navigation nodes:Footer Pages

三个子节点,充分体现了 CMS 驱动的设计原则:

Twitter Link 是一个 Component,类型为 CMSLinkComponent:

对应的 Angular Component 名称为:LinkComponent

cx-link 也是 generic link 的消费者之一:

Twitter link 是一个 Component?

ID: FooterNavigationComponent


navigation node:Footer Pages

SAP Commerce Cloud Spartacus UI footer 区域的设计模型相关推荐

  1. SAP Commerce Cloud Spartacus UI 的购物车 Cart 功能

    此功能是在 TUA Spartacus 库的 1.0 版中引入的. 购物车在 TUA Spartacus 与核心 Commerce Spartacus 中的工作方式不同,需要支持产品供应以及复杂的定价 ...

  2. SAP Commerce Cloud Spartacus UI 的 ActionClass 数据结构设计

    以 CmsSetPageSuccessIndex 为例: 运行时该 Action 类包含三大字段: (1) meta (2) payload (3) type meta meta 包含的 loader ...

  3. SAP Commerce Cloud Spartacus UI 4.0.1 版本的安装

    官方文档 使用命令行创建一个基于 Angular 12 的 应用: ng new mystore --style=scss 务必注意 SAP Spartacus 4 以上的安装环境要求: 然后命令行调 ...

  4. 如何获取 SAP Commerce Cloud Spartacus UI 购物车 Cart 的加载状态

    在 Storefront AppModule 构造函数里注入 ActiveCartService: private cartService: ActiveCartService, 调用其 API: c ...

  5. SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计

    在 components.reducer.ts 里,loaderReducer 函数,会根据输入的 entityType,返回一阶 reducer. 然后在代码第86行,调用该一阶 reducer 进 ...

  6. SAP Commerce Cloud Spartacus UI 修改 primary color 的方法

    问题 解答 The easiest and recommended way to override basic primary colors, as of version 4.0, is by cha ...

  7. SAP Commerce Cloud Spartacus UI 读取 Component 元数据的 Action 设计

    先看数据:该 page 包含了 35 个 Components: 可以看到这些 Components 属于 homepage,但是 payload 字段里,只包含了 35 个 Components 其 ...

  8. SAP Commerce Cloud 新一代 UI Spartacus 和 Customer Data cloud 的集成

    SAP Customer Data Cloud Integration Spartacus 3.2 版可用. SAP Customer Data Cloud 允许您启用自定义注册和登录,还可以管理用户 ...

  9. SAP Commerce Cloud (电商云) UI 的懒加载功能

    最近工作中处理了 SAP Commerce Cloud (电商云) UI 的一个懒加载 (Lazy Load) 功能的问题,这里把自己学到的东西做个记录. UI 懒加载,有时又称惰性加载,延迟加载,是 ...

最新文章

  1. 详细的线程池讲解,手写C与C++版本
  2. html单行注释符号
  3. J.U.C系列(三)Semaphore的使用
  4. idea无法导入主题jar包_总结IDEA开发的26个常用设置
  5. minitab怎么算西格玛水平_16:三因子二水平全因子实验设计和MINITAB应用训练
  6. 拥抱变化——从Atlas到ASP.NET AJAX(4):大大简化的了的Extender扩展器控件
  7. 2014年西安区域赛的几道水题(A. F. K)
  8. php访问mysql数据库实验报告,php访问mysql数据库
  9. Atitit 并发锁机制 艾提拉总结 目录 1. 2. 用的比较频繁锁 2 1.1. 语法锁sync api锁 2 1.2. 数据库标志位锁 2 1.3. 文件锁 2 2. 锁得类型 3 2 2.
  10. Java中的servlet是什么?
  11. [导入]polygraph3d三维运行时引擎为silverlight 1.0.zip(15.69 KB)
  12. 神秘的杀毒软件原理曝光
  13. 大龄女计算机考研去当老师,考研、考公务员、当老师!哪个更适合女生?史上最强答案给你!...
  14. 【U8+】用友U8+16.1不自动删除历史的自动备份文件
  15. ips入侵防御系统部署
  16. 微软TTS语音引擎编程入门
  17. 题目 1020: 猴子吃桃的问题
  18. 如何编写测试用例?(详细分析)
  19. mysql数据库脚本是什么意思_什么是mysql数据库脚本
  20. AngularJS vs. jQuery,看看谁更胜一筹

热门文章

  1. 萨默尔机器人_第四届丝博会人工智能受热捧 机器人会送餐会协助办案
  2. 计算机辅助诊断系统的应用,AI医疗影像辅助诊断系统
  3. optimized mysql_MySQL|MySQL执行计划
  4. 合并多个文本文件中的内容到一个文件中
  5. 《Java从入门到放弃》JavaSE入门篇:文件操作
  6. servlet请求和响应的过程
  7. linux 运维视频集合
  8. mybatis学习教程(二)初级的增、删、查、改
  9. 查看selenium python的api小记录
  10. 小黑小波比.Ubuntu下的截图