Oracle JET Webアプリケーションのデータ・バインド
イントロダクション
このチュートリアルでは、Oracle JavaScript Extension Toolkit (Oracle JET) WebアプリケーションでローカルJSONドキュメントを使用する方法について説明します。
Oracle JETは、様々なソースからのデータを管理するための多数のデータ・プロバイダ・クラスを提供する開発ツールキットです。viewModelでは、MutableArrayDataProvider
のインスタンスにJSONファイルから読み取ったデータを移入してから、MutableArrayDataProvider
インスタンスをビューのOracle JETカスタムHTML要素にバインドします。
目的
このチュートリアルの完了時に、JSONドキュメントからデータ・プロバイダにデータを読み取り、Oracle JETリスト・ビュー・コンポーネントを追加し、そのコンポーネントをJSONデータ・オブジェクトにバインドする方法を学習します。
前提条件
- JavaScriptランタイム、Node.jsおよび最新のOracle JETリリース・コマンドライン・インタフェースがインストールされたOracle JETアプリケーションを作成するために設定された開発環境
JET_Web_Application
フォルダが作成されるように、この学習パスで前のチュートリアルの完了JET_Web_Application/src/ts/
ディレクトリにダウンロードされたstore_data.json
タスク1: JSONドキュメントのダウンロードとデータの確認
store_data.json
ファイルをJET_Web_Application/src/ts/
ディレクトリにダウンロードします。- Webブラウザで
store_data.json
ファイルを開き、データ構造を表示します。store_data.json
ファイルには、アクティビティ・オブジェクトとそのプロパティのリストが含まれます。各アクティビティには、独自のプロパティを持つアイテムの配列が含まれます。
タスク2: ViewModelでのデータ・プロバイダの移入
JSONファイルからOracle JETのojmutablearraydataprovider
オブジェクトにデータをプッシュします。
-
JET_Web_Application/src/ts/viewModels
ディレクトリに移動し、エディタでdashboard.ts
ファイルを開きます。 -
store_data.json
ファイルからデータをインポートして、ViewModelで使用できるようにします。import * as AccUtils from "../accUtils"; import * as ko from "knockout"; import MutableArrayDataProvider = require("ojs/ojmutablearraydataprovider"); import "ojs/ojselectsingle"; import "ojs/ojlabel"; import "ojs/ojchart"; import * as storeData from "text!../store_data.json";
-
存在しない場合は、JSONデータを保持するために使用する
ojmutablearraydataprovider
モジュールをインポートします。import MutableArrayDataProvider = require("ojs/ojmutablearraydataprovider");
-
DashboardViewModel()
クラスの前に、number
型のid
フィールドを含む型別名Activity
を定義します。... type Activity = { id: number; } class DashboardViewModel {
-
DashboardViewModel()
クラスで、次のステップで作成するactivityDataProvider
のタイプを追加します。class DashboardViewModel { val: ko.Observable<string>; . . . chartDataProvider: MutableArrayDataProvider<string, {}>; chartData: Array<Object>; activityDataProvider: MutableArrayDataProvider<Activity["id"], Activity>; . . .
-
DashboardViewModel()
クラスのconstructror
メソッドで、MutableArrayDataProvider
のインスタンス(activityDataProvider
)を作成し、JSON.parse
メソッドを使用してJSONデータを読み取ります。constructor() { this.val = ko.observable("pie"); ... this.activityDataProvider = new MutableArrayDataProvider< Activity["id"], Activity >(JSON.parse(storeData), { keyAttributes: "id", }); . . .
-
Oracle JETリスト・ビュー・コンポーネント・モジュールをインポートします。
import * as storeData from "text!../store_data.json"; import MutableArrayDataProvider = require("ojs/ojmutablearraydataprovider"); import "ojs/ojlistview";
ojlistview
モジュールは、このチュートリアルの次の項のビューをサポートします。 -
dashboard.ts
ファイルを保存します。dashboard.ts
ファイルは、final-data-bind-dashboard-ts.txtのようになります。
タスク3:ビューのリスト・ビュー・コンポーネントのデータ・バインド
oj-list-view
要素は、HTMLリストの拡張バージョンである対話型機能を備えたOracle JETカスタムHTML要素です。viewModelに移入されたactivityDataProvider
変数をリスト・ビューのdata
属性にバインドして、データをリストに指定します。
-
JET_Web_Application/src/ts/views
ディレクトリに移動し、エディタでdashboard.html
ファイルを開きます。 -
dashboard.html
ファイルで、id
属性値がactivitiesContainer
のdiv
要素を、Oracle JETの単一およびチャートの選択コンポーネントを含むitemDetailsContainer
div
要素の上に追加します。<div class="oj-hybrid-padding"> <h1>Product Information</h1> <div id="activitiesContainer"> </div> <div id="itemDetailsContainer"> <oj-label for="basicSelect">Select Chart:</oj-label> ... </div>
-
activitiesContainer
div
要素内で、一方向バインディングを使用してリスト・データを取得するdata
属性を持つoj-list-view
要素を追加します。<div class="oj-hybrid-padding"> <h1>Product Information</h1> <div id="activitiesContainer"> <oj-list-view id="activitiesList" aria-labelledby="activitiesHeader" data="[[activityDataProvider]]" gridlines.item="visible"> </oj-list-view> </div>
また、
gridlines
属性のvisible
値を指定して、リスト内のアイテム間にグリッド線が表示され、アクセシビリティのベスト・プラクティスとしてaria-labelledby
属性が表示されるようにします。 -
作成した
oj-list-view
要素内に、slot
属性を持つHTMLtemplate
要素を追加して、リスト内の各アイテムをレンダリングします。<div class="oj-hybrid-padding"> <h1>Product Information</h1> <div id="activitiesContainer"> <oj-list-view id="activitiesList" aria-labelledby="activitiesHeader" data="[[activityDataProvider]]" gridlines.item="visible"> <template slot="itemTemplate"> </template> </oj-list-view> </div>
-
テンプレート要素内で、一方向バインディングを使用して現在のデータ・オブジェクトからリスト・データを取得する
value
属性を持つoj-bind-text
カスタムHTML要素を含む別のdiv
要素を追加します。<div class="oj-hybrid-padding"> <h1>Product Information</h1> <div id="activitiesContainer"> <oj-list-view id="activitiesList" aria-labelledby="activitiesHeader" data="[[activityDataProvider]]" gridlines.item="visible"> <template slot="itemTemplate"> <div> <strong> <oj-bind-text value="[[$current.data.name]]"></oj-bind-text> </strong> </div> </template> </oj-list-view> </div>
-
HTML
h3
要素を追加して、アクティビティ・リストのヘッダーを指定します。<div class="oj-hybrid-padding"> <h1>Product Information</h1> <div id="activitiesContainer"> <h3 id="activitiesHeader">Activities</h3> <oj-list-view id="activitiesList" aria-labelledby="activitiesHeader" data="[[activityDataProvider]]" gridlines.item="visible"> . . .
-
itemDetailsContainer
div
で、h3
要素とoj-label
要素を追加して、チャートのヘッダーを指定します。. . . <div id="itemDetailsContainer"> <h3>Item Details</h3> <oj-label for="basicSelect">Select Chart:</oj-label> . . .
-
dashboard.html
ファイルを保存します。dashboard.html
ファイルは、final-data-bind-dashboard-html.txtのようになります。
タスク4: Webアプリケーションの実行
-
ターミナル・ウィンドウで、
JET_Web_Application
ディレクトリに移動し、アプリケーションを実行します。$ ojet serve
ブラウザに、Webアプリケーションの「ダッシュボード」タブに表示されるアクティビティのリストが表示されます。
-
実行中のWebアプリケーションを表示するブラウザ・ウィンドウまたはタブを閉じます。
-
端末ウィンドウでCtrl+Cを押し、プロンプトが表示されたら
y
と入力してOracle JETツール・バッチ・ジョブを終了します。 -
次のチュートリアルのために、端末ウィンドウを開いたままにします。
その他の学習リソース
docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルでさらに無料の学習コンテンツにアクセスします。さらに、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerにします。
製品ドキュメントは、Oracleヘルプ・センターを参照してください。
Data bind a component in an Oracle JET web app
F53107-01
February 2022
Copyright © 2022, Oracle and/or its affiliates.