2017-02-18 9 views
1

SAPUI5アプリケーションでi18nファイルを削除したいと考えています。すべての翻訳を提供するODataサービスを開発し、i18nモデルをmanifest.jsonから削除しました。また、i18nモデルをComponent.jsのODataサービスに基づいて作成します。しかし、私のi18nモデルのデータに要素がバインドされない理由はわかりません。SAPUI5のODataサービスからi18nを登録する方法は?

text="{i18n>TESTSTRING}" 
:このコードは、私のComponent.jsファイルの内とXMLビューファイルの内側に配置されて

oDataModel.read("/TranslationConfigSet", { 
      async: false, 
      filters: aFilter, 
      success: function(oData, response) { 
       var aI18n = {}; 
       var results = oData.results; 
       for (var i = 0; i < results.length; i++) { 
        aI18n[results[i]["ZStringKey"]] = results[i]["ZTranslation"]; 
       } 
       var oI18nModel = new JSONModel(aI18n); 
       _this.setModel(oI18nModel, "i18n"); 
      }, 
      error: function(oError) { 

      } 
     }); 

私はこのようないくつかのコードを持っている:ここでは

は、ODATAモデルを作成するための私のコードです

TESTSTRINGはデータと配列に存在しますが、

+0

でなければなりません。その場合、どうやって "_this"を定義しましたか?ところで、アイデアは素晴らしいです...あなたがこれを解決するかどうかをコミュニティに知らせてください。素晴らしい投稿! – zyrex

+0

私はそれを解決できることを願っています。 'var _this = this;'はコールバック関数の外側です。 –

+1

私はそれを得ることができません、なぜこれはいい考えですか? OData関連のオーバーヘッドを追加して翻訳をロードし、JSONModelに翻訳を格納し、別のバインディング構文を採用する必要があり、ResourceModelの機能を失う...利点はどこですか? – matbtt

答えて

1

バインド構文でスラッシュ(/)が欠落しているようです。 JSONモデルのbinding syntaxは、リソースバンドル構文とは異なります。あなたのバインドは

text="{i18n>/TESTSTRING}" 
+0

Stephenありがとう、問題を解決しました。 –

+0

唯一の問題は、バックエンドからデータを受け取る前にビューをレンダリングすることです。レンダリングする前にこのファイルをロードする方法や、レンダリングを延期する方法はありますか? –

+1

これはodataサービスからロードしているため、ODataのレイテンシに依存します。あなたはおそらく、一度model.readが完了したら隠すことができるビジーインジケータセットを持っている可能性があります –

関連する問題