ContextHub Javascript API參考

ContextHub元件已新增至頁面時,ContextHub Javascript API可供指令碼使用。

ContextHub常數

ContextHub Javascript API所定義的常數值。

事件常數

下表列出了ContextHub Stores發生的名稱事件。 另請參閱ContextHub.Utils.Eventing

常數 說明
ContextHub.Constants.EVENT_NAMESPACE ContextHub的事件命名空間 ch
ContextHub.Constants.EVENT_ALL_STORES_READY 指示所有必需儲存都已註冊、初始化並準備使用 全儲存就緒
ContextHub.Constants.EVENT_STORES_PARTIALLY_READY 表示並非所有儲存都在指定超時內初始化 stores-partially-ready
ContextHub.Constants.EVENT_STORE_REGISTERED 在註冊商店時引發 商店註冊
ContextHub.Constants.EVENT_STORE_READY 指出商店已準備就緒。 註冊後會立即觸發,但JSONP儲存區除外,當擷取資料時會觸發)。 商店就緒
ContextHub.Constants.EVENT_STORE_UPDATED 當商店更新其永續性時引發 商店更新
ContextHub.Constants.PERSISTENCE_CONTAINER_NAME 永續性容器名稱 ContextHubPersistence
ContextHub.Constants.SERVICE_RAW_RESPONSE_KEY 儲儲存存原始JSON結果的特定永續性金鑰名稱 /_/raw-response
ContextHub.Constants.SERVICE_RESPONSE_TIME_KEY 儲存指示擷取JSON資料時的特定時間戳記 /_/response-time
ContextHub.Constants.SERVICE_LAST_URL_KEY 儲存上次呼叫期間使用之JSON服務的特定URL /_/url
ContextHub.Constants.IS_CONTAINER_EXPANDED 指出ContextHub的UI是否已展開 /_/容器擴充

UI事件常數

下表列出ContextHub UI發生的事件名稱。

常數 說明
ContextHub.Constants.EVENT_UI_MODE_REGISTERED 註冊模式時引發 ui-mode註冊
ContextHub.Constants.EVENT_UI_MODE_UNREGISTERED 未註冊模式時引發 ui-mode-unregered
ContextHub.Constants.EVENT_UI_MODE_RENDERER_REGISTERED 在註冊模式轉換器時引發 ui-mode-renderer-registered
ContextHub.Constants.EVENT_UI_MODE_RENDERER_UNREGISTERED 當模式轉換器未註冊時引發 ui-mode-renderer-unregerred
ContextHub.Constants.EVENT_UI_MODE_ADDED 新增模式時引發 ui-mode-added
ContextHub.Constants.EVENT_UI_MODE_REMOVED 移除模式時引發 ui-mode-removed
ContextHub.Constants.EVENT_UI_MODE_SELECTED 當使用者選取模式時引發 ui-mode-selected
ContextHub.Constants.EVENT_UI_MODULE_REGISTERED 註冊新模組時引發 ui-module-registered
ContextHub.Constants.EVENT_UI_MODULE_UNREGISTERED 未註冊模組時引發 ui-module-unregered
ContextHub.Constants.EVENT_UI_MODULE_RENDERER_REGISTERED 在註冊模組轉譯器時引發 ui-module-renderer-registered
ContextHub.Constants.EVENT_UI_MODULE_RENDERER_UNREGISTERED 在未註冊模組渲染器時引發 ui-module-renderer-unregred
ContextHub.Constants.EVENT_UI_MODULE_ADDED 新增模組時引發 ui-module-added
ContextHub.Constants.EVENT_UI_MODULE_REMOVED 移除模組時引發 ui-module-removed
ContextHub.Constants.EVENT_UI_CONTAINER_ADDED 將UI容器新增至頁面時引發 ui-container-added
ContextHub.Constants.EVENT_UI_CONTAINER_OPENED 開啟ContextHub UI時引發 ui-container-opened
ContextHub.Constants.EVENT_UI_CONTAINER_CLOSED 在收合ContextHub UI時引發 ui-container-closed
ContextHub.Constants.EVENT_UI_PROPERTY_MODIFIED 修改屬性時引發 ui-property-modified
ContextHub.Constants.EVENT_UI_RENDERED 每次轉譯ContextHub UI時引發(例如在屬性變更後) ui-rendered
ContextHub.Constants.EVENT_UI_INITIALIZED 初始化UI容器時引發 ui-initialized
ContextHub.Constants.ACTIVE_UI_MODE 指示活動的UI模式 /_/active-ui-mode

ContextHub Javascript API參考

ContextHub物件可讓您存取所有商店。

函式(ContextHub)

getAllStores()

傳回所有已註冊的ContextHub儲存區。

此函式沒有參數。

退貨

包含所有ContextHub儲存的對象。 每個商店都是使用與商店相同名稱的物件。

範例

下面的示例檢索所有儲存,然後檢索地理位置儲存:

var allStores = ContextHub.getAllStores();
var geoloc = allStores.geolocation;

getStore(name)

將商店擷取為Javascript物件。

參數

  • name: 註冊商店的名稱。

退貨

表示儲存的對象。

範例

下面的示例檢索地理位置儲存:

var geoloc = ContextHub.getStore("geolocation");

ContextHub.SegmentEngine.Segment

代表ContextHub區段。 使用ContextHub.SegmentEngine.SegmentManager來取得區段。

函式(ContextHub.ContextEngine.Segment)

getName()

傳回區段名稱為字串值。

getPath()

將段定義的儲存庫路徑返回為字串值。

ContextHub.SegmentEngine.SegmentManager

提供ContextHub區段的存取權。

函式(ContextHub.SegmentEngine.SegmentManager)

getResolvedSegments()

傳回在目前內容中解析的區段。 此函式沒有參數。

退貨

ContextHub.SegmentEngine.Segment物件的陣列。

ContextHub.Store.Core

ContextHub的基類。

屬性(ContextHub.Store.Core)

事件

A ContextHub.Utils.Eventing物件。 使用此物件來系結函式以儲存事件。 有關預設值和初始化的資訊,請參見init(name,config)

名稱

商店名稱。

持久性

ContextHub.Utils.Persistence物件。 有關預設值和初始化的資訊,請參見init(name,config)

函式(ContextHub.Store.Core)

addAllItems(tree, options)

合併資料對象或陣列與儲存資料。 對象或陣列中的每個鍵/值對都添加到儲存中(通過setItem函式):

  • 對象: 鍵是屬性名稱。
  • Array:鍵 是陣列索引。

請注意,值可以是物件。

參數

  • 樹: (對象或陣列)要添加到儲存的資料。
  • 選項: (物件)傳遞至setItem函式的選項選項物件。如需詳細資訊,請參閱setItem(key,value,options)options參數。

退貨

boolean值:

  • true表示已儲存資料對象。
  • false表示資料儲存未更改。

addReference(key, anotherKey)

建立從一個鍵到另一個鍵的引用。 鍵不能參照自身。

參數

  • key:參 照的鍵 anotherKey

  • 其他鍵: 由引用的鍵 key

退貨

boolean值:

  • true表示已添加引用。
  • false表示未添加任何引用。

announceReadiness()

觸發此商店的ready事件。 此函式沒有參數,也不返回值。

clean()

從商店移除所有資料。 函式沒有參數,也沒有返回值。

getItem(key)

傳回與索引鍵相關聯的值。

參數

  • key: (String)要傳回值的索引鍵。

退貨

表示鍵值的對象。

getKeys(includeInternals)

從商店擷取金鑰。 或者,您可以檢索ContextHub框架內部使用的鍵。

參數

  • includeInternals: 結果中包 true 含內部使用的鍵的值。這些鍵以下划線("_")字元開頭。 預設值為 false.

退貨

鍵名的陣列(string值)。

getReferences()

從儲存中檢索引用。

退貨

使用引用鍵作為引用鍵索引的陣列:

  • 引用鍵與addReference函式的key參數相對應。

  • 引用的鍵與addReference函式的anotherKey參數相對應。

getTree(includeInternals)

從儲存中檢索資料樹。 或者,您可以包含ContextHub架構內部使用的索引鍵/值配對。

參數

  • includeInternals: 值包括 true 結果中內部使用的鍵/值對。此資料的鍵以下划線("_")字元開頭。 預設值為 false.

退貨

表示資料樹的對象。 鍵是對象的屬性名稱。

init(name, config)

初始化儲存。

  • 將儲存資料設定為空對象。

  • 設定空對象的儲存引用。

  • eventChannel是data:name,其中​name​是商店名稱。

  • storeDataKey是/store/name,其中​name​是商店名稱。

參數

  • name: 商店名稱。

  • config:包 含配置屬性的對象:

    • eventBerring:預設值為32。
    • 事件:此商店的ContextHub.Utils.Eventing物件。 預設值為ContextHub.eventing物件所使用的值。
    • 永續性:此儲存的ContextHub.Utils.Persistence對象。 預設值為ContextHub.persistence物件。

isEventingPaused()

判斷是否暫停此商店的事件。

退貨

布林值:

  • true:事件會暫停,因此不會觸發此商店的事件。
  • false:事件不會暫停,因此會觸發此商店的事件。

pauseEventing()

暫停商店的事件,以便不觸發任何事件。 此函式不需要參數,也不返回值。

removeItem(key, options)

從商店移除金鑰/值配對。

刪除鍵後,函式會觸發data事件。 事件資料包括商店名稱、已移除的金鑰名稱、已移除的值、金鑰的新值(null),以及動作類型「remove」。

或者,您可以防止觸發data事件。

參數

  • key: (字串)要移除的索引鍵名稱。

  • 選項: (對象)選項的對象。以下對象屬性有效:

    • silent:值true可防止觸發data事件。 預設值為 false.

退貨

boolean值:

  • true表示已刪除鍵/值對。
  • false表示資料儲存未更改,因為在儲存中未找到密鑰。

removeReference(key)

從商店移除參考。

參數

  • 鍵:要 刪除的鍵引用。此參數與addReference函式的key參數相對應。

退貨

boolean值:

  • true表示已刪除引用。
  • false表示密鑰無效且儲存未更改。

reset(keepRemainingData)

重設商店持續資料的初始值。 或者,您可以從商店移除所有其他資料。 重設商店時,會暫停此商店的事件。 此函式不返回值。

初始值會提供在用於執行個體化商店物件之config物件的initialValues屬性中。

參數

  • keepRemainingData: (布林值)true值會導致非初始資料持續存在。值false會移除除初始值以外的所有資料。

重設商店持續資料的初始值。 或者,您可以從商店移除所有其他資料。 重設商店時,會暫停此商店的事件。 此函式不返回值。

初始值會提供在用於執行個體化商店物件之config物件的initialValues屬性中。

參數

  • keepRemainingData:(布林值)若值為true,則會保留非初始資料。 值false會移除除初始值以外的所有資料。

resolveReference(key, retry)

檢索引用的鍵。 或者,您可以指定用於解析最佳匹配的迭代次數。

參數

  • key: (String)要解析引用的鍵。此key參數與addReference函式的key參數相對應。

  • retry: (number)要使用的迭代數。

退貨

代表引用鍵的string值。 如果未解析引用,則會傳回key參數的值。

resumeEventing()

繼續此商店的事件,以觸發事件。 此函式不定義任何參數,也不返回值。

setItem(key, value, options)

新增金鑰/值配對至商店。

僅當密鑰的值與當前儲存的密鑰值不同時,才觸發data事件。 您可以選擇性地防止觸發data事件。

事件資料包括商店名稱、金鑰、上一個值、新值和動作類型set

參數

  • key: (字串)索引鍵的名稱。

  • 選項: (對象)選項的對象。以下對象屬性有效:

    • silent:值true可防止觸發data事件。 預設值為 false.
  • value: (物件)與索引鍵關聯的值。

退貨

boolean值:

  • true表示已儲存資料對象。
  • false表示資料儲存未更改。

ContextHub.Store.JSONPStore

包含JSON資料的商店。 資料會從外部JSONP服務中擷取,或選擇性地從傳回JSON資料的服務中擷取。 建立此類實例時,使用 init函式指定服務詳細資訊。

商店使用記憶體內永續性(Javascript變數)。 只有在頁面的存留期間,才能使用儲存資料。

ContextHub.Store.JSONPStore擴充了ContextHub.Store.Core並繼承了該類的函式。

函式(ContextHub.Store.JSONPStore)

configureService(serviceConfig, override)

配置用於連接到此對象使用的JSONP服務的詳細資訊。 您可以更新或替換現有配置。 函式不返回值。

參數

  • serviceConfig:包 含下列屬性的物件:

    • 主機:(字串)伺服器名稱或IP位址。

    • jsonp:(布爾值)值為true表示服務是JSONP服務,否則為false。 若為true,則為{callback:"ContextHub.Callbacks.Object.name}物件會新增至service.params物件。

    • params:(物件)URL參數,表示為物件屬性。 參數名稱是屬性名稱,參數值是屬性值。

    • 路徑:(字串)服務的路徑。

    • 埠:(編號)服務的埠號。

    • 安全:(字串或布林值)決定用於服務URL的通訊協定:

      • auto: //
      • true:https://
      • false:https://
  • override: (布林值)。值true會使現有服務配置被serviceConfig的屬性替換。 值false會使現有服務配置屬性與屬性serviceConfig合併。

getRawResponse()

傳回自上次呼叫JSONP服務後快取的原始回應。 函式不需要參數。

退貨

表示原始回應的物件。

getServiceDetails()

擷取此ContextHub.Store.JSONPStore物件的服務物件。 服務對象包含建立服務URL所需的所有資訊。

退貨

具有以下屬性的對象:

  • host: (字串)伺服器名稱或IP位址。

  • jsonp: (布林值)值true表示服務是JSONP服務,否則為false。若為true,則為{callback:"ContextHub.Callbacks.Object.name}物件會新增至service.params物件。

  • params: (物件)URL參數,表示為物件屬性。參數名稱是屬性名稱,參數值是屬性值。

  • path: (字串)服務的路徑。

  • 埠: (編號)服務的埠號。

  • secure: (字串或布林)決定用於服務URL的通訊協定:

    • 自動://
    • true:https://
    • false:https://

getServiceURL(resolve)

擷取JSONP服務的URL。

參數

  • resolve: (布林)決定是否在URL中包含已解析的參數。值true可解析參數,而false則否。

退貨

代表服務URL的string值。

init(name, config)

初始化ContextHub.Store.JSONPStore物件。

參數

  • name: (字串)商店名稱。

  • config: (物件)包含service屬性的物件。JSONPStore物件使用service物件的屬性來建構JSONP服務的URL:

    • eventBerring:32.

    • 事件:此商店的ContextHub.Utils.Eventing物件。 預設值為ContextHub.eventing對象。

    • 永續性:此儲存的ContextHub.Utils.Persistence對象。 依預設,會使用記憶體永續性(Javascript物件)。

    • 服務:(物件)

      • 主機:(字串)伺服器名稱或IP位址。

      • jsonp:(布爾值)值為true表示服務是JSONP服務,否則為false。 當為true時,{callback: "ContextHub.Callbacks.*Object.name*}物件會新增至service.params

      • params:(物件)URL參數,表示為物件屬性。 參數名稱和值分別是對象屬性名稱和值。

      • 路徑:(字串)服務的路徑。

      • 埠:(編號)服務的埠號。

      • 安全:(字串或布林值)決定用於服務URL的通訊協定:

        • 自動://
        • true:https://
        • false:https://
      • 逾時:(數量)等待JSONP服務在超時前響應的時間(以毫秒為單位)。

      • ttl:在呼叫JSONP服務之間傳遞的最小時間(以毫秒為單位)。 (請參閱queryService函式)。

queryService(reload)

查詢遠程JSONP服務並快取響應。 如果自上次呼叫此函式以來的時間長度小於config.service.ttl的值,則不會呼叫服務,且快取的回應不會變更。 或者,您可以強制呼叫服務。 調用init函式初始化儲存時,將設定config.service.ttl屬性。

在查詢完成時觸發ready事件。 如果未設定JSONP服務URL,則函式將不執行任何操作。

參數

  • reload: (布林值)值true會移除快取的回應,並強制呼叫JSONP服務。

重設

重設商店持續資料的初始值,然後呼叫JSONP服務。 或者,您可以從商店移除所有其他資料。 在重設初始值時,會暫停此商店的事件。 此函式不返回值。

初始值會提供在用於執行個體化商店物件之config物件的initialValues屬性中。

參數

  • keepRemainingData: (布林值)true值會導致非初始資料持續存在。值false會移除除初始值以外的所有資料。

resolveParameter(f)

解析給定參數。

ContextHub.Store.PeristedJSONPStore

ContextHub.Store.PeristedJSONPStore延伸了ContextHub.Store.JSONPStore,因此它繼承了該類別的所有功能。 但是,從JSONP服務中檢索的資料會根據ContextHub持久性的配置進行保存。 (請參閱持久性模式。)

ContextHub.Store.PeristedStore

ContextHub.Store.PerisatedStore擴充了ContextHub.Store.Core,因此它繼承了該類別的所有函式。 此儲存中的資料會根據ContextHub持久性的配置進行保存。

ContextHub.Store.SessionStore

ContextHub.Store.SessionStore擴充了ContextHub.Store.Core,因此繼承了該類別的所有功能。 此儲存區中的資料會使用記憶體內持久性(Javascript物件)來保存。

ContextHub.UI

管理UI模組和UI模組轉譯器。

函式(ContextHub.UI)

registerRenderer(moduleType, renderer, dontRender)

向ContextHub註冊UI模組轉換器。 註冊轉譯器後,它可用於建立UI模組。 在擴充ContextHub.UI.BaseModuleRenderer時使用此函式,以建立自訂的UI模組轉譯器。

參數

  • moduleType: (String)UI模組轉譯器的識別碼。如果已使用指定值註冊了渲染器,則在註冊此渲染器之前會先取消註冊現有渲染器。
  • renderer: (字串)轉換UI模組的類名。
  • dontRender: (布林值)設為 true 防止在註冊轉譯器後轉譯ContextHub UI。預設值為 false.

範例

下面的示例將渲染器註冊為contexthub.browserinfo模組類型。

ContextHub.UI.registerRenderer('contexthub.browserinfo', new SurferinfoRenderer());

與Cookie互動的公用程式類別。

exists(key)

判斷Cookie是否存在。

參數

  • key: 包含 String 您正在測試之Cookie的金鑰。

退貨

boolean值true表示Cookie存在。

範例

if (ContextHub.Utils.Cookie.exists("name")) {
   // conditionally-executed code
}

getAllItems(filter)

傳回所有具有符合篩選條件之索引鍵的Cookie。

參數

  • (可選)filter:​符合Cookie索引鍵的准則。 若要傳回所有Cookie,請指定無值。 支援下列類型:

    • 字串:字串會與Cookie金鑰比較。
    • 陣列:陣列中的每個項目都是篩選器。
    • RegExp對象:物件的測試函式可用來比對Cookie金鑰。
    • 函式:測試Cookie金鑰符合的函式。 如果測試確認相符,函式必須將Cookie金鑰視為參數,並傳回true。

退貨

Cookie的物件。 物件屬性是Cookie金鑰,而金鑰值是Cookie值。

範例

ContextHub.Utils.Cookie.getAllItems([/^cq-authoring/, /^cq-editor/])

getItem(key)

傳回Cookie值。

參數

  • 金鑰: 您要其值的Cookie金鑰。

退貨

Cookie值,若找不到該金鑰的Cookie,則為null

範例

ContextHub.Utils.Cookie.getItem("name");

getKeys(filter)

傳回符合篩選條件之現有Cookie的索引鍵陣列。

參數

  • filter:符 合Cookie金鑰的條件。支援下列類型:

    • 字串:字串會與Cookie金鑰比較。
    • 陣列:陣列中的每個項目都是篩選器。
    • RegExp對象:物件的測試函式可用來比對Cookie金鑰。
    • 函式:測試Cookie金鑰符合的函式。 如果測試確認相符,函式必須將Cookie金鑰視為參數並傳回true

退貨

字串陣列,其中每個字串是符合篩選條件之Cookie的索引鍵。

範例

ContextHub.Utils.Cookie.getKeys([/^cq-authoring/, /^cq-editor/])

removeItem(key, options)

移除Cookie。 若要移除Cookie,值會設為空白字串,到期日會設為目前日期的前一天。

參數

  • key: 代表 String 要移除之Cookie的金鑰的值。

  • 選項: 包含用於配置Cookie屬性的屬性值的對象。有關資訊,請參見 [setItem](/docs/experience-manager-64/developing/personlization/contexthub-api.html?lang=zh-Hant#setitem-key-value-options)函式。 expires屬性沒有作用。

退貨

此函式不會傳回值。

範例

ContextHub.Utils.Cookie.vanish([/^cq-authoring/, 'cq-scrollpos']);

setItem(key, value, options)

建立指定金鑰和值的Cookie,並將Cookie新增至目前檔案。 或者,您可以指定設定Cookie屬性的選項。

參數

  • key:包 含Cookie索引鍵的字串。

  • value:包 含Cookie值的字串。

  • 選項: (可選)包含下列任何設定Cookie屬性的屬性的物件:

    • 過期:指定Cookie過期時間的datenumber值。 日期值指定到期的絕對時間。 數字(以天為單位)會將到期時間設定為目前時間加上數字。 預設值為 undefined.
    • 安全:指定Cookie之Secure屬性的boolean值。 預設值為 false.
    • 路徑:String值,用作Cookie的Path屬性。 預設值為 undefined.

退貨

具有設定值的Cookie。

範例

ContextHub.Utils.Cookie.setItem("name", "mycookie", {
    expires: 3,
    domain: 'localhost',
    path: '/some/directory',
    secure: true
});

消失(filter, options)

移除所有符合指定篩選的Cookie。 使用getKeys函式來比對Cookie,並使用removeItem函式來移除。

參數

  • filter:filter 數呼叫中要使用的引 [getKeys](/docs/experience-manager-64/sites-developing/contexthub-api.html?lang=zh-Hant#getkeys-filter) 數。

  • 選項: 在調 options 用函式時要使用的引 [removeItem](/docs/experience-manager-64/sites-developing/contexthub-api.html?lang=zh-Hant#removeitem-key-options) 數。

退貨

此函式不會傳回值。

ContextHub.Utils.Eventing

可讓您將函式系結並解除系結至ContextHub儲存事件。 使用儲存的eventing屬性訪問儲存的ContextHub.Utils.Eventing對象。

函式(ContextHub.Utils.Eventing)

off(name, selector)

將函式與事件解除系結。

參數

  • name:要 解除函 數系結 的事件名稱。

  • selector: 識別系結的選擇器。(請參閱ononce函式的selector參數)。

退貨

此函式不返回值。

on(name, handler, selector, triggerForPastEvents)

將函式系結至事件。 每次發生事件時都會呼叫函式。 或者,在建立系結之前,可針對過去發生的事件呼叫函式。

參數

  • name: (字串)您 要系 結函式之事件的名稱。

  • handler: (函式)要綁定到事件的函式。

  • selector: (字串)系結的唯一識別碼。如果要使用off函式來移除系結,則需要選擇器來識別系結。

  • triggerForPastEvents: (Boolean)指出是否應針對過去發生的事件執行處理常式。值true會呼叫過去事件的處理常式。 值false會呼叫處理器,以處理未來事件。 預設值為 true.

退貨

triggerForPastEvents引數為true時,此函式會傳回一個boolean值,指出事件是否發生在過去:

  • true:事件發生在過去,將呼叫處理常式。
  • false:事件過去未發生。

如果triggerForPastEventsfalse,則此函式不返回值。

範例

下面的示例將函式綁定到地理位置儲存的資料事件。 函式會在頁面上填入來自商店的緯度資料項目值。

<div class="location">
    <p>latitude: <span id="lat"></span></p>
</div>    

<script> 
    var geostore = ContextHub.getStore("geolocation");
    geostore.eventing.on(ContextHub.Constants.EVENT_DATA_UPDATE,getlat,"getlat");

    function getlat(){
       latitude = geostore.getItem("latitude");
       $("#lat").html(latitude);
    }
</script>

once(name, handler, selector, triggerForPastEvents)

將函式系結至事件。 對於事件的首次出現,該函式只被調用一次。 或者,在建立系結之前,可針對過去發生的事件呼叫函式。

參數

  • name: (字串)您 要系 結函式之事件的名稱。

  • handler: (函式)要綁定到事件的函式。

  • selector: (字串)系結的唯一識別碼。如果要使用off函式來移除系結,則需要選擇器來識別系結。

  • triggerForPastEvents: (Boolean)指出是否應針對過去發生的事件執行處理常式。值true會呼叫過去事件的處理常式。 值false會呼叫處理器,以處理未來事件。 預設值為 true.

退貨

triggerForPastEvents引數為true時,此函式會傳回一個boolean值,指出事件是否發生在過去:

  • true:事件發生在過去,將呼叫處理常式。
  • false:事件過去未發生。

如果triggerForPastEventsfalse,則此函式不返回值。

ContextHub.Utils.inheritance

一種實用程式類,它使對象能夠繼承另一個對象的屬性和方法。

函式(ContextHub.Utils.inheritance)

inherit(child, parent)

使對象繼承另一個對象的屬性和方法。

參數

  • child: (對象)繼承的對象。
  • parent: (物件)定義繼承的屬性和方法的物件。

ContextHub.Utils.JSON

提供將物件序列化為JSON格式,以及將JSON字串反序列化為物件的函式。

函式(ContextHub.Utils.JSON)

parse(data)

將字串值解析為JSON,並將其轉換為javascript物件。

參數

  • data: JSON格式的字串值。

退貨

Javascript物件。

範例

代碼ContextHub.Utils.JSON.parse("{'city':'Basel','country':'Switzerland','population':'173330'}");返回以下對象:

Object {
   city: "Basel",
   country: "Switzerland",
   population: 173330
}

stringify(data)

將Javascript值和物件序列化為JSON格式的字串值。

參數

  • data:要 序列化的值或物件。此函式支援布林值、陣列、數字、字串和日期值。

退貨

序列化字串值。 當data是R egExp值時,此函式返回空對象。 當data為函式時,返回undefined

範例

以下代碼返回"{'city':'Basel','country':'Switzerland','population':'173330'}":

ContextHub.Utils.JSON.stringify({
   city: "Basel",
   country: "Switzerland",
   population: 173330
});

ContextHub.Utils.JSON.tree

此類有助於處理要儲存或從ContextHub儲存中檢索的資料對象。

函式(ContextHub.Utils.JSON.tree)

addAllItems()

建立資料對象的副本,並從第二個對象添加資料樹。 該函式返回副本,但不修改任一原始對象。 當兩個對象的資料樹包含相同的鍵時,第二對象的值覆蓋第一對象的值。

參數

  • 樹: 所複製的對象。
  • secondTree: 與對象副本合併的對 tree 像。

退貨

包含合併資料的對象。

cleanup()

建立對象的副本,查找並刪除資料樹中不含值、空值或未定義值的項,並返回副本。

參數

  • 樹: 要清除的對象。

退貨

已清理的樹副本。

getItem()

從對象中檢索鍵的值。

參數

  • 樹: 資料對象。
  • 鍵: 要檢索的值的鍵。

退貨

與鍵相關的值。 當密鑰具有子密鑰時,此函式返回複雜對象。 當鍵的值類型為undefined時,將返回null

範例

請考慮下列Javascript物件:

myObject {
  user: {
    location: {
      city: "Basel",
        details: {
          population: 173330,
          elevation: 260
        }
      }
    }
  }

以下示例代碼返回值260:

ContextHub.Utils.JSON.tree.getItem(myObject, "/user/location/details/elevation");

以下示例代碼檢索具有子鍵的鍵的值:

ContextHub.Utils.JSON.tree.getItem(myObject, "/user");

函式返回以下對象:

Object {
  location: {
    city: "Basel",
    details: {
      population: 173330,
      elevation: 260
    }
  }
}

getKeys()

從對象的資料樹中檢索所有鍵。 或者,您只能檢索特定鍵子代的鍵。 您也可以選擇指定所擷取索引鍵的排序順序。

參數

  • 樹: 從中檢索資料樹鍵的對象。
  • parent: (可選)要為其檢索子項的鍵的資料樹中項的鍵。
  • order: (選用)決定傳回索引鍵排序順序的函式。(請參閱Mozilla Developer Network上的Array.prototype.sort。)

退貨

按鍵陣列。

範例

請考慮下列物件:

myObject {
  location: {
    weather: {
      temperature: "28C",
      humidity: "77%",
      precipitation: "10%",
      wind: "8km/h"
    },
    city: "Basel",
    country: "Switzerland",
    longitude: 7.5925727,
    latitude: 47.557421
  }
}

ContextHub.Utils.JSON.tree.getKeys(myObject);指令碼返回以下陣列:

["/location", "/location/city", "/location/country", "/location/latitude", "/location/longitude", "/location/weather", "/location/weather/humidity", "/location/weather/precipitation", "/location/weather/temperature", "/location/weather/wind"]

removeItem()

建立給定對象的副本,從資料樹中刪除指定的分支,並返回修改的副本。

參數

  • 樹狀結構:資料物件。
  • 鍵:要移除的鍵。

退貨

已移除索引鍵的原始資料物件的副本。

範例

請考慮下列物件:

myObject {
  one: {
    foo: "bar",
    two: {
      three: {
        four: {
          five: 5,
          six: 6
        }
      }
    }
  }
}

以下示例指令碼從資料樹中刪除/one/two/three/four分支:

myObject = ContextHub.Utils.JSON.tree.removeItem(myObject, "/one/two/three/four");

函式返回以下對象:

myObject {
  one: {
    foo: "bar"
  }
}

sanitizeKey(key)

清理字串值,以便用作索引鍵。 要清理字串,此函式將執行以下操作:

  • 將多個連續的正斜線減為單斜線。
  • 從字串的開頭和結尾移去空格。
  • 將結果分割為一系列以斜線分隔的字串。

使用合成的陣列建立可用密鑰。 參數

  • key: string to sanitize.

退貨

string值的陣列,其中每個字串是key中由斜線劃分的部分。 代表已淨化的索引鍵。 如果已淨化的陣列長度為零,則此函式返回null

範例

以下代碼清理字串以生成陣列["this", "is", "a", "path"] ,然後從陣列中生成鍵"/this/is/a/path" :

var key = " / this////is/a/path ";
ContextHub.Utils.JSON.tree.sanitizeKey(key)
"/" + ContextHub.Utils.JSON.tree.sanitizeKey(key).join("/");

setItem(tree, key, value)

將鍵/值對添加到對象副本的資料樹中。 有關資料樹的資訊,請參見持久性

參數

  • 樹狀結構:資料物件。
  • 鍵:要與要添加的值關聯的鍵。 關鍵字是資料樹中項的路徑。 此函式會呼叫ContextHub.Utils.JSON.tree.sanitize,以在新增索引鍵之前先加以淨化。
  • 值:要添加到資料樹中的值。

退貨

包含key/ value對的tree對的副本。

範例

請考慮下列Javascript程式碼:

var myObject = {
     user: {
        location: {
           city: "Basel"
           }
        }
     };

var myKey = "/user/location/details";

var myValue = { 
      population: 173330, 
      elevation: 260 
     };

myObject = ContextHub.Utils.JSON.tree.setItem(myObject, myKey, myValue);

myObject物件具有下列值:

ContextHub.Utils.storeCandipates

可讓您註冊商店候選人,並取得已註冊的商店候選人。

函式(ContextHub.Utils.storeCapponitals)

getRegisteredCapnoties(storeType)

傳回已註冊為商店候選者的商店類型。 擷取特定商店類型或所有商店類型的已註冊資料。

參數

退貨

儲存類型的對象。 對象屬性是儲存類型名稱,屬性值是已註冊的儲存候選項的陣列。

getStoreFromCapponitals(storeType)

從已註冊的候選者傳回商店類型。 如果註冊了多個同名的儲存類型,函式將返回優先順序最高的儲存類型。

參數

退貨

表示已註冊儲存候選對象的對象。 如果請求的商店類型未註冊,則會擲回錯誤。

getSupportedStoreTypes()

傳回已註冊為商店候選者的商店類型名稱。 此函式不需要參數。

退貨

字串值的陣列,其中每個字串是註冊商店候選者的商店類型。 請參閱 ContextHub.Utils.storeCandidates.registerStoreCandidate函式的storeType參數。

registerStoreCanditade(store, storeType, priority, applies)

使用名稱和優先順序將儲存對象註冊為儲存候選對象。

優先順序是指出同名商店重要性的數字。 當使用與已註冊的商店候選者相同的名稱註冊商店候選者時,使用優先順序較高的候選者。 在註冊商店候選者時,只有當優先順序高於同名的已註冊商店候選者時,才註冊商店。

參數

  • store: (物件)要註冊為商店候選項的商店物件。
  • storeType: (String)商店候選者的名稱。建立商店候選項的例項時,需要此值。
  • priority: (Number)商店候選項的優先順序。
  • applies: (函式)用以評估儲存在當前環境中的適用性的調用函式。如果儲存適用,則函式必須返回true,否則必須返回false。 預設值是傳回true的函式:function() {return true;}

範例

ContextHub.Utils.storeCandidates.registerStoreCandidate(myStoreCandidate, 
                                'contexthub.mystorecandiate', 0);

本頁內容

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now