SAP Commerce Cloud Spartacus UI footer 区域的设计模型
本文研究如下圖高亮所示的 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 区域的设计模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq黄钻隐身访问会被对方知道吗(PC版官
- 下一篇: Angular 内容投影 content