延伸 ContextHub extending-contexthub
當提供的儲存和模組不符合您的解決方案需求時,定義新類型的ContextHub儲存和模組。
建立自訂商店候選項 creating-custom-store-candidates
ContextHub存放區是根據註冊存放區候選項目建立。 若要建立自訂商店,您需要建立並註冊商店候選商店。
包含建立和註冊儲存候選項的程式碼的javascript檔案必須包含在 用戶庫資料夾. 資料夾的類別必須符合下列模式:
contexthub.store.[storeType]
此 [storeType] 類別的一部分是 storeType 已註冊商店候選的商店。 (請參閱 註冊ContextHub儲存候選項)。 例如,對於 contexthub.mystore,用戶端程式庫資料夾的類別必須 contexthub.store.contexthub.mystore.
建立ContextHub存放區候選項 creating-a-contexthub-store-candidate
若要建立商店候選項目,請使用 ContextHub.Utils.inheritance.inherit 函式,以擴展基儲存庫之一:
請注意,每個基本存放區會將 ContextHub.Store.Core 儲存。
下列範例會建立 ContextHub.Store.PersistedStore 儲存候選項:
myStoreCandidate = function(){};
ContextHub.Utils.inheritance.inherit(myStoreCandidate,ContextHub.Store.PersistedStore);
實際上,您的自訂存放區候選項目將定義其他函式或覆寫存放區的初始設定。 數個 樣本庫候選項 安裝在下方的存放庫中 /libs/granite/contexthub/components/stores. 若要從這些範例中學習,請使用CRXDE Lite來開啟javascript檔案。
註冊ContextHub儲存候選項 registering-a-contexthub-store-candidate
註冊候選儲存庫以將其與ContextHub框架整合,並允許從中建立儲存庫。 要註冊商店候選商,請使用 registerStoreCandidate 函式 ContextHub.Utils.storeCandidates 類別。
註冊商店候選項時,您會提供商店類型的名稱。 從候選項建立商店時,您可以使用商店類型來識別其所依據的候選項。
註冊商店候選商時,您會指出其優先順序。 當使用與已註冊的儲存候選相同的儲存類型來註冊儲存候選時,使用優先順序較高的候選。 因此,您可以使用新實施來覆寫現有的商店候選項目。
ContextHub.Utils.storeCandidates.registerStoreCandidate(myStoreCandidate,
'contexthub.mystorecandidate', 0);
在大多數情況下,只需要一個候選者,而優先順序可設為 0,但如果您有興趣,可以了解 更多高級註冊, 允許根據javascript條件選擇少數的存放區實施(applies)和候選優先順序。
建立ContextHub UI模組類型 creating-contexthub-ui-module-types
在 隨ContextHub安裝 不符合您的要求。 若要建立UI模組類型,請透過擴充 ContextHub.UI.BaseModuleRenderer 類別,然後註冊 ContextHub.UI.
若要建立UI模組轉譯器,請建立 Class 包含轉譯UI模組邏輯的物件。 至少,您的類必須執行以下操作:
-
擴充
ContextHub.UI.BaseModuleRenderer類別。 此類別是所有UI模組轉譯器的基本實作。 此Class對象定義名為extend用於將此類命名為正在擴展的類。 -
提供預設設定。 建立
defaultConfig屬性。 此屬性是物件,包含針對contexthub.baseUI模組,以及您需要的任何其他屬性。
的來源 ContextHub.UI.BaseModuleRenderer 位於/libs/granite/contexthub/code/ui/container/js/ContextHub.UI.BaseModuleRenderer.js。 若要註冊轉譯器,請使用 registerRenderer 方法 ContextHub.UI 類別。 您必須提供模組類型的名稱。 管理員根據此轉譯器建立UI模組時,會指定此名稱。
在自行執行的匿名函式中建立並註冊渲染器類。 以下範例是以contexthub.browserinfo UI模組的原始碼為基礎。 此UI模組是 ContextHub.UI.BaseModuleRenderer 類別。
;(function() {
var SurferinfoRenderer = new Class({
extend: ContextHub.UI.BaseModuleRenderer,
defaultConfig: {
icon: 'coral-Icon--globe',
title: 'Browser/OS Information',
storeMapping: {
surferinfo: 'surferinfo'
},
template:
'<p>{{surferinfo.browser.family}} {{surferinfo.browser.version}}</p>' +
'<p>{{surferinfo.os.name}} {{surferinfo.os.version}}</p>'
}
});
ContextHub.UI.registerRenderer('contexthub.browserinfo', new SurferinfoRenderer());
}());
包含建立和註冊轉譯器的程式碼的javascript檔案必須包含在 用戶庫資料夾. 資料夾的類別必須符合下列模式:
contexthub.module.[moduleType]
此 [moduleType] 類別的一部分是 moduleType 已註冊模組轉譯器。 例如,對於 moduleType of contexthub.browserinfo,用戶端程式庫資料夾的類別必須 contexthub.module.contexthub.browserinfo.