データ・アクション・ベース・クラスの拡張

拡張するデータ・アクションのサブクラスを選択し、必要なフォルダとファイルを生成したら、新しいデータ・アクションに固有のコードの記述を開始できます。

新しく生成されたデータ・アクション・コードは、%PLUGIN_DEV_DIR%\src\dataaction以下にあります。ファイルおよびフォルダ構造の説明は、「生成されたフォルダとファイル」を参照してください。編集する必要のあるメイン・ファイルは、JavaScriptファイルです。たとえば、カスタム・データ・アクションIDがcompany.MyDataactionである場合、検索するファイルは%PLUGIN_DEV_DIR%\src\dataaction\company-mydataaction\mydataaction.jsです。

データ・アクションのKnockoutモデルの拡張

格納する必要のある追加プロパティがデータ・アクションに含まれる場合、それらを監視可能プロパティとしてKnockoutモデルに追加する必要があります。データ・アクションのIDがcompany.MyDataactionである場合、Knockoutモデルはmydataaction.MyDataActionKOModelと呼ばれ、mydataaction.jsの最上位付近にあります。デフォルトで、このKnockoutモデルはデータ・アクションのスーパークラスで使用されるKnockoutモデルを拡張するように構成されるため、モデルに追加プロパティを追加するだけで済みます。

HTTPAPIDataActionベース・クラスを拡張しているデータ・アクションでは、次のようなコードを使用します:

1 - mydataaction.MydataactionKOModel = function (sClass, sID, sName, sVersion, sScopeID, aAnchorToColumns, eValuePassingMode, sURL,
        eHTTPMethod, sPOSTParams)
2 - {   
3 - mydataaction.MydataactionKOModel.baseConstructor.call(this, sClass, sID, sName, sVersion, sScopeID, aAnchorToColumns, eValuePassingMode, sURL, eHTTPMethod, sPOSTParams);
4 - };
5 - jsx.extend(mydataaction.MydataactionKOModel, dataaction.HTTPAPIDataActionKOModel);
  • 行1: これは、Knockoutモデルのコンストラクタです。モデルが格納する必要のあるプロパティを受け入れます。
  • 行3: これは、スーパークラスのコンストラクタであり、Knockoutモデルのスーパークラスのいずれかによって処理されるすべてのプロパティに対する値の受渡し先となるbaseConstructorでもあります。
  • 行5: これは、このKnockoutモデル・クラスのスーパークラスを設定します。

次のようなコードを使用して文字列と配列を追加し、データ・アクションによって永続化されるプロパティを設定します。

1   mydataaction.MydataactionKOModel = function (sClass, sID, sName, sVersion, sScopeID, aAnchorToColumns, eValuePassingMode, sURL, eHTTPMethod, sPOSTParams)
2   {   
3   mydataaction.MydataactionKOModel.baseConstructor.call(this, sClass, sID, sName, sVersion, sScopeID, aAnchorToColumns, eValuePassingMode, sURL, eHTTPMethod, sPOSTParams);
4   
5  
6   // Set Defaults   
7   sMyString = sMyString || "My default string value";   
8   aMyArray = aMyArray || [];     
9  
10
11  // Asserts   
12  jsx.assertString(sMyString, "sMyString");   
13  jsx.assertArray(aMyArray, "aMyArray");
14 
15
16  // Add observable properties   
17  this.sMyString = ko.observable(sMyString);   
18  this.aMyArray = ko.observableArray(aMyArray);
19  };
20  jsx.extend(mydataaction.MydataactionKOModel, dataaction.HTTPAPIDataActionKOModel);