バージョン

Knockout サポートの構成

トピックの概要

目的

このトピックは、Knockout ライブラリを使用して View-Model のオブジェクトをバインドするために Ignite UI for jQuery エディター コントロールを構成する方法について説明します。

前提条件

以下の表は、このトピックを理解するための前提条件として必要なトピックと外部リソースの一覧です。

トピック

  • igTextEditor の概要: このトピックは、igTextEditor コントロールを紹介し、基本的なインスタンス化の例を示します。

  • igNumericEditor の概要: このトピックは、igNumericEditor™ コントロールを紹介し、基本的なインスタンス化の例を示します。

  • igDateEditor の概要: このトピックは、igDateEditor™ コントロールを紹介し、基本的なインスタンス化の例を示します。

  • igCurrencyEditor の概要: このトピックは、igCurrencyEditor コントロールを紹介し、基本的なインスタンス化の例を示します。

  • igPercentEditor の概要: このトピックは、igPercentEditor™ コントロールを紹介し、基本的なインスタンス化の例を示します。

  • igMaskEditor の概要: このトピックは、igMaskEditor™ コントロールを紹介し、基本的なインスタンス化の例を示します。

  • igCheckboxEditor の概要: このトピックは、igCheckboxEditor™ コントロールを紹介し、基本的なインスタンス化の例を示します。

  • igDatePicker Oの概要: このトピックは、igDatePicker™ コントロールを紹介し、基本的なインスタンス化の例を示します。

  • igTimePicker の概要: このトピックは、igTimePicker™ コントロールを紹介し、基本的なインスタンス化の例を示します。

外部リソース

このトピックの内容

このトピックは、以下のセクションで構成されます。

概要

Knockout サポートの概要

Ignite UI for jQuery エディター コントロールにおける Knockout ライブラリのサポートは、開発者が Knockout ライブラリとその宣言構文を使用して Ignite UI for jQuery エディターを初期化し構成するための簡単な手段を提供することを目的としています。

Knockout のサポートは、View-Model への外部更新が発生した場合に、Knockout バインディングがページに適用されるときに最初に呼び出される Knockout 拡張機能としてページの存続期間中に実装されます。また、ビジネスに適したdata-bind 属性に関連するいずれかのエディター コントロール オプションを指定できます。

コード例

コード例の概要

以下の表に、このトピックで使用するコード例を示します。

コード例: Editor コントロール用に値のバインディングを構成する

この例は、Knockout により管理される View-Model オブジェクトに Ignite UI for jQuery エディター コントロールの値オプションをバインドする方法を示します。igTextEditorigNumericEditorigCurrencyEditor および igDateEditor のコントロールのコンテキストで示されます。Knockout の宣言構文を使用して、コントロールが入力要素のデータ バインド属性からインスタンス化され View-Model 監視可能プロパティにバインドされます。

コード

以下のコード スニペットは、Knockout により管理される監視可能プロパティを宣言する View-Model オブジェクトを示します。

JavaScript の場合:

var viewModel = {
    orderDate: ko.observable(new Date(2017, 0, 21)),
    dueInDays: ko.observable(7),
    customerName: ko.observable("Peter Sanders"),
    contactPhone: ko.observable("(318) 555-6879"),
    advancePayment: ko.observable(516.89),
    discountPercent: ko.observable(8)
};

以下のコード スニペットは、宣言されたKnockout バインディングをページに適用する方法を示します。ko.applyBindings() 呼び出しは、Loader の即時コールバック中に実行される点に注意してください。これは、Knockout の Ignite UI for jQuery エディター拡張機能が、バインディングの適用前にページにロードされる必要があるためです。

JavaScript の場合:

$.ig.loader({
    scriptPath: "http://localhost/ig_ui/js/",
    cssPath: "http://localhost/ig_ui/css/",
    resources: "igEditors,extensions/infragistics.ui.editors.knockout-extensions.js",
    ready: function () {
        ko.applyBindings(viewModel);
    }
});

以下のコード スニペットは、ビュー内でエディター コントロールのバインディング オプションを宣言する方法を示します。最も重要なのは、対応する input 要素の data-bind 属性におけるインスタンス化オプションの宣言部分です。

HTML の場合:

<!-- date editor -->
<input data-bind="igDateEditor: { value: orderDate }"/>
<!-- numeric editor -->
<input data-bind="igNumericEditor: { value: dueInDays }"/>
<!-- text editor -->
<input data-bind="igTextEditor: { value: customerName }"/>
<!-- currency editor -->
<input data-bind="igCurrencyEditor: { value: advancePayment }"/>

コード例: 入力マスクを構成する (igMaskEditor)

この例は、Knockout により管理される View-Model オブジェクトに igMaskEditor コントロールをバインドする方法を示します。Knockout の宣言構文を使用して、input 要素の data-bind 属性から igMaskEditor をインスタンス化し View-Model 監視可能プロパティにバインドします。エディターの inputMask オプションはその他に、特定のパターンに従ってユーザー入力を制限するに構成されます。

コード

以下のコード スニペットは、igMaskEditor コントロールをインスタンス化します。コントロールは、View-Model オブジェクトの contactPhone 監視可能プロパティにバインドされます。また、マスクの inputMask に加えて、エディターは電話番号を示すマスクに設定されます。

HTML の場合:

<!-- mask editor -->
<input id="contactPhoneIG" class="row-control" data-bind="igMaskEditor: { 
        value: contactPhone,
        inputMask: '(000) 000-0000'
    }"/>

コード例: スケール ファクターを構成する (igPercentEditor)

この例は、Knockout により管理される View-Model オブジェクトに igPercentEditor コントロールをバインドする方法を示します。Knockout の宣言構文を使用して、igPercentEditor は入力要素のデータ バインドからインスタンス化され View-Model 監視可能プロパティにバインドされます。エディターの displayFactor オプションはその他に、基本の View-Model 値を適切なパーセンテージ入力まで拡大縮小するように構成されます。

コード

以下のコード スニペットは、igPercentEditor コントロールをインスタンス化します。コントロールは、View-Model オブジェクトの discountPercent 監視可能プロパティにバインドされます。さらに、discountPercent で数値を適切に拡大縮小するため、エディターの displayFactor オプションを 1 に設定します。

HTML の場合:

<!-- percent editor -->
<input id="discountPercentIG" class="row-control" data-bind="igPercentEditor: { 
        value: discountPercent, 
        displayFactor : 1 
    }"/>

完全コード サンプル

このサンプルは、Knockout データ バインディングにより管理されるデータに Ignite UI for jQuery Editor コントロールをバインドする方法を紹介します。

コード例: 即時更新モードを構成する (igTextEditor)

説明

この例は、Ignite UI for jQuery エディター コントロールの値オプションをKnockout により管理される View-Model にバインドし、各キーストロークで View-Model を更新するようコントロールを構成する方法を示します。デフォルトでは、Ignite UI for jQuery コントロール内の編集は、コントロールがフォーカスを失った場合、たとえば onBlur が発生した場合などに View-Model に送られます。以下のコードは、updateMode オプションを immediate に設定することにより、igTextEditor コントロールの更新モードをイミディエイトに構成します。

コード

以下のコードはこの例を実装します。

HTML の場合:

<div data-bind="igTextEditor: { 
        value: customerName, 
        updateMode: 'immediate' 
    }"></div>

注: 更新モード オプションは、初期化の時のみに構成できます。実行時は変更できません。

コード例: エディターの Disable ハンドラーの構 (igTextEditor)

開発者が Knockout の disabled バインディング ハンドラーを適用したい場合、これが自動的にエディターを有効/無効にしません。エディターにコントロールの有効化/無効化を処理する特別なロジックがあります。そのため、追加の igEditorDisable バインディング ハンドラーが作成されます。以下のコードは、igEditorDisable バインディングを宣言する方法を示します。

JavaScript の場合:

function viewModel() {
    this.isDisabled =  ko.observable(false);
}

HTML の場合:

<div data-bind="igTextEditor: { ...}, igEditorDisable: isDisabled"></div>

関連コンテンツ

トピック

このトピックの追加情報については、以下のトピックも合わせてご参照ください。

リソース

以下の資料 (Infragistics のコンテンツ ファミリー以外でもご利用いただけます) は、このトピックに関連する追加情報を提供します。

  • Knockout: これは、Knockout ライブラリのホーム ページです。ライブラリには、完全なドキュメントとサンプルが含まれます。

オンラインで表示: GitHub