2017-03-09 2 views
1

私はUI5の新機能です。私はブラウザ(クライアント)からのリクエストに基づいてモデルを作成する必要があるアプリケーションに取り組んでいます。 私は&事前にすべてのODATAのサービスが行われた要求に応じてそれらを使用する消費した場合、それは必要以上に重すぎになります。 は、どのような方法があり、これを動的に行うことができますか?odataサービスを使用してmanifest.jsonからモデルを動的に作成する方法

答えて

1

私は別に私の提案を置くていますので、あなたの質問のタイトルと質問内容が矛盾するかもしれないと思います。以下のように、あなたのmanifest.jsonをファイルで

manifest.jsonを

から動的モデルを作成「sap.app」セクション/プロパティを検索し、データソースを追加するODATAサービスを使用する方法

"dataSources": { //used data sources -> ui5-related information stored in sap.ui5 namespace (unique inside the app) 
     "modelalias": { //key is alias which is used below in e.g. sap.ui5 ... 
      "uri": "/sap/opu/odata/snce/PO_S_SRV;v=2/" , //mandatory; version is part of uri, e.g. ";v=2", default is 1 
      "type": "OData" , //OData (default)|ODataAnnotation|INA|XML|JSON 
      "settings": { //data-source-type-specific attributes (key, value pairs) 
       "odataVersion": "2.0" , //possible values: 2.0 (default), 4.0 
       "annotations": [ "equipmentanno" ], //filled e.g. for Smart Template 
       "localUri": "model/metadata.xml" //relative url to local metadata 
    "maxAge": 360 //time in seconds 
    } 
     } 

エイリアス「に、mymodel」で、このモデルをインスタンス化するには、次のように、あなたは「sap.ui5」の下にmanifest.jsonをにエントリを追加することができます。

今、マニフェストファイルは、「データソース」でごODATAのURIに基づいて「mymodelという」をインスタンス化してからComponent.jsにモデルを設定します。アプリケーションが起動するのでとき、あなたが使用して任意のコントローラでモデルにアクセスすることができます。

this.getOwnerComponent().getModel("mymodel") 

私は&事前にすべてのODATAのサービスを消費した場合は、要求が行わ に応じてそれらを使用し、それが不必要にあまりにも重くなります。どの 方法があり、これを動的に行うことができますか?

モデルを作成すると、アプリの起動が遅くなることが想定されます。モデルの作成が

  • データの読み出しは、時間とモデルのインスタンスを取るもの
  • ODataModelsがasyncronouslyので、デフォルトを.read呼び出すことが仕事ですか、その操作が.WRITEある非常に速いです

    • :ので、これは常に真ではないかもしれません

    特別なケース:事前に(起動時に)すべてのデータをプリフェッチする場合は、$ select、$ top、$ skipなどのフィルタを使用することをお勧めしますゲートウェイサービスは、動作のような成長のリストを実装します。

    希望はあなたを助けます。 manifest.jsonを上

    • 詳細情報:Link
    • 成長のリスト:Link
    • ODataModel例:Link
  • 関連する問題