私はチュートリアルに従いましたが、今はその学習を実際のアプリケーションに拡張しようとしています。私のアプリではJSONモデルを使用しています。チュートリアルとは異なり、私は実際のアプリケーションであり、データモデルをロードするときにフィルタとして機能するようにユーザーの資格情報を取得する必要があります。チュートリアルでは、モデルはcomponent.jsに読み込まれます。私のアプリでは、ユーザーのIDとパスワードを入力する必要があるので、アプリケーションの最初のビューよりもモーダルに表示されるログインフラグメントがあります。これはマスタービューになります。これは、 component.jsの後には批判的にです。ユーザーを検証した後、サーバーからJSONデータをAjax経由で収集し、this.setData(my_json)を介してデフォルトモデルに配置します。this.setModel()がコンテキストに基づいて異なる動作をする理由
詳細ビューで呼び出されたthis.getModel()が空のモデルを作成したという点で、私は徹底的なバグを作りました。私はモデルをマスタビューに設定して、テーブルコントロールのデータを見ることができます。何が得られますか?
私はルーティングの問題を考慮しましたが、それは問題ではないことを確認しました。ルータを通過するパラメータをログに記録でき、とにかく詳細ビューが表示されます。
要約:マスターページでthis.setModel()を使用し、詳細ページでthis.getModel()を使用しますが、後者は空のモデルです。
質問:モデルをアプリ全体で利用できるようにします。チュートリアルでは、component.jsでモデルを設定することに焦点を当てていますが、できません。たとえば、グローバルモデルをマスタービューから設定するための正しい構文、またはcomponent.js以外の任意の場所を設定する正しい構文は何ですか。
私は(最後の行は重要である)私はマスターに次のように使用する必要があると思う:
var oModel = new JSONModel(); // declare a JSON model
oModel.setData(<json string>); // load a JSON string fetched from serve etc.
sap.ui.getCore().setModel(oModel); // important - set as the core model
私は私の混乱の源はチュートリアルで、モデルがコンポーネントに設定されているようだということだと思います
this.setModel(oModel); // a line in component.js
介しIしたがってcomponent.js文脈におけるこのは理にかなっているに沿った図に関する図でこのながらアプリ大域あると仮定する。私は正しい?
ありがとうございました - 非常に明確で、将来的に参照する必要がある可能性が高いと思われるものは間違いありません。私がこの質問を提起する前に、getOwnerComponent()。getModel()を使って詳細ビューでモデルを取得しようとしましたが、getOwnerComponent()を使用してモデルをマスターからコンポーネントに設定したところで、 .setModel()。そんなに近かったし、まだまだ。 –