延伸 ContextHub extending-contexthub

定義新型別的ContextHub存放區和模組,如果提供的儲存區和模組不符合您的解決方案需求。

建立自訂商店候選者 creating-custom-store-candidates

ContextHub存放區是從已註冊的存放區候選項中建立的。 若要建立自訂商店,請建立並註冊商店候選商店。

包含建立及註冊候選商店之程式碼的JavaScript檔案必須包含在 使用者端資料庫資料夾. 資料夾的類別必須符合以下模式:

contexthub.store.[storeType]

[storeType] 類別的一部分為 storeType 存放區候選者註冊所在的區域。 (請參閱 註冊ContextHub存放區候選者)。 例如,若為storeType 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

建立自訂UI模組型別,如果 與ContextHub一起安裝 不符合您的需求。 若要建立UI模組型別,請擴充以下程式碼來建立UI模組轉譯器: ContextHub.UI.BaseModuleRenderer 類別,然後將其註冊至 ContextHub.UI.

若要建立UI模組轉譯器,請建立 Class 包含轉譯UI模組之邏輯的物件。 您的類別至少必須執行下列動作:

  • 擴充 ContextHub.UI.BaseModuleRenderer 類別。 此類別是所有UI模組轉譯器的基本實作。 此 Class 物件會定義名為的屬性 extend 用來將這個類別命名為要擴充的類別。

  • 提供預設設定。 建立 defaultConfig 屬性。 此屬性是一個物件,其中包含為定義的屬性 contexthub.base UI模組,以及您需要的任何其他屬性。

的來源 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 模組轉譯器註冊所在的區域。 例如,對於 moduleTypecontexthub.browserinfo,使用者端程式庫資料夾的類別必須是 contexthub.module.contexthub.browserinfo.

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2