2016-07-25 10 views
0

ルーキーはSAPUI5環境でJavaScriptを使用しています。 私はマスターディテールテンプレートを使用しているため、サプライヤが表示したマスターページにあり、詳細ページにはプロダクトがあります。私の目標は、マスターページのすべてのサプライヤー名の後ろにある製品の数を表示することです。 製品と供給元は2つの事業体であり、関連があります。 詳細コントローラにはテーブルの長さをカウントし、詳細ページの変数を表示する関数があります。 マスターページでこの変数を取得するにはどうすればよいですか?詳細からマスタページに変数を渡す方法SAPUI5

私はOData操作でそれを試しましたが、2つのエンティティ間の依存関係が原因で機能しませんでした。

マスターからディテール・コントローラーへのカウント機能にアクセスするためにEventbusを試しました。イベントのトリガーに問題が発生しました。

私はオブジェクトとして機能を表示しようとしましたが、変数のアクセスに問題がありました。

誰かが私の問題に対してスマートな解決策を持っていますか? :)

よろしく フェリックス

+0

サプライヤーエンティティにプロパティとしてカウントを追加しないでください。 – slkorolev

答えて

1

これを実現する最も簡単な方法はあなたのために重い物を持ち上げるを行うためのODataサービスを持つことです。製品の数を含むSupplierエンティティに追加の属性を追加する必要があります。

詳細ページには1つのサプライヤの製品しか表示されていないため、詳細ページからマスターページにカウントを転送するという上記のアプローチは実際には機能しません。あなたの質問では、あなたはすべてのサプライヤーの数を表示したいと述べました。これにより、リスト内のすべてのサプライヤの詳細ページでロジックを実行する必要があります。

サプライヤあたりの製品数がそれほど多くない場合は、/Suppliers?$expand=Productsを使用してサプライヤごとの製品を拡張し、データを受け取ったときにサプライヤ1社あたりの製品数をカウントするロジックを追加することも考えられます(changeイベント実行中にbindElementを設定してください)。サプライヤごとに多数の製品がある場合は、サプライヤごとのすべての製品が取得され、ダウンロードされ、カウントされるため、これは非常に遅くなります。

もう1つの方法は、リスト内のすべてのサプライヤのODataサービスに$ countクエリを発行することです。これによりフロントエンドの負荷が軽減されますが、これにより、ODataサービスを実行しているバックエンドの負荷がさらに高くなる可能性があります。

あなたのケースでは、数え方が実行可能なオプションになる可能性は低いです。だから私はあなたの場合ODataサービスを拡張しようとします。

+0

残念ながら私はODPサービスにアクセスすることはできません。これはSAPテストサービスだからです。たぶん私は正しい質問を書いていないかもしれない:/。もちろん、私の詳細コントローラで私の製品リストを数えることができます。しかし、私は、この変数をローカルの詳細コントローラ/ビューに持っていますが、マスターページにその変数を表示するには、その変数がマスタコントローラに必要です。 –

+0

あなたはあなたの質問を正しく公式化しました。答えにもこれが記されており、詳細ページを流れるようにするあなたのアプローチがうまくいかない理由が説明されています。選択したサプライヤのために、迅速に計算を実行するので、選択したサプライヤでも機能します。ただし、詳細ページでは、サプライヤの一覧にあるすべてのサプライヤの詳細ページは表示されません。したがって、詳細ページから見つかった製品の数をマスターページにコピーすると、特定のサプライヤ(選択されているサプライヤ)の製品の数だけが表示され、すべての製品の数は表示されません。 – jpenninkhof

+0

私は別の(比較的遅い)アプローチを追加しました。これは、リスト内の個々のサプライヤごとに$ countのクエリを実行することです。 – jpenninkhof

関連する問題