2016-11-16 6 views
1

UI5で使用されるAMDとモジュールのパラダイムを使用して、個別のJSファイルで別々のJSクラスを使用して、関連するコントローラから私のajaxコードを分離します。カスタムコントロールではなく、UI5のカスタムクラスを拡張する方法

基礎クラスは、一般的なエラー処理などの一般的なアクティビティに関係しますが、これから拡張される特定のクラスは、サブジェクト固有のAjax通信のみを処理します。これはカスタムコントロールではないので、レンダリング機能、メタデータなどの必要はありません。

私はsap.ui.define機能の恩恵を受けると同時に、新しいクラスをUI5の良い市民にしたいと考えています。たとえば、クラスがインスタンス化されたときに私のinitを起動したいとします。

どのsapui5クラスから拡張する必要がありますか?私は現在sap/ui/base/Objectを使用していますが、より良いパフォーマンスや目的に合った良い選択があるかどうかを知りたいと思います。

私はdocumentation on custom controlsを認識していますが、これは画面にレンダリングするクラスの詳細のみに焦点を当てているようです。

これは私の現在のアプローチのスケルトンです:

sap.ui.define(['sap/ui/base/Object'], 

    function(BaseObject) { 
     "use strict"; 

     var AjaxBase = BaseObject.extend("myAjaxBase", { 

      constructor: function(oControl) { 
       BaseObject.apply(this); 
       console.log("AjaxBase.constructor() fires") 
      } 
     }) 

     AjaxBase.prototype.init = function() { 
      console.log("AjaxBase.init() fires") 
     } 
     return AjaxBase; 

}, true) 

答えて

1

あなたもsap.ui.base.Objectを拡張しないオブジェクトに対してsap.ui.defineを使用することができます。したがって、UI5オブジェクトによって提供される機能が本当に必要ない場合は、それらを拡張する必要はありません。しかし、あなたのケースでは、イベントサポートを使用するように見えます。この場合、少なくともsap.ui.base.EventProviderを拡張すると便利です。

コントローラーからバックエンド呼び出しを分離したいので、JSONModelを使用しているように見え、ちょうど読み込むよりも複雑なユースケースがあります。この場合、作成操作、更新操作、および削除操作をサポートするJSONModelを拡張することもできます。

関連する問題