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

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

新しく生成されたデータ処理コードは%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.jsの最上部近くにあるmydataaction.MyDataActionKOModelと呼ばれます。 デフォルトでは、この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 Modelスーパークラスのいずれかによって処理されるすべてのプロパティの値を渡す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);