これを行うには主に2つの(良い)方法、ルーティング関与の両方があります。
まず、ワークリストルートのpatternMatched
イベントのイベントハンドラ内でコードを移動するだけです(簡単な解決策)。また、ルータのターゲットのdisplayイベントを聞くこともできますが、代わりにpatternMatched
ルートイベントを使用することを強くお勧めします。
このイベントは、ルートが一致するたびに(ビューが表示されるたびに)トリガーされます。
onInit: function() {
// ... your current code
var oRouter = this.getOwnerComponent().getRouter();
oRouter.getRoute("worklist").attachPatternMatched(this.onRouteMatched, this);
},
// ...
onRouteMatched: function() {
var oTable = this.byId("myTable"), //replace the ID accordingly :)
aFilters = ...;
oTable.getBinding("items").filter(aFilters);
}
2番目のオプションは基本的に最初のオプションの拡張です。ユースケースには適していない可能性があります(ユーザーが最初の画面で選択できるフィルタによって異なります)。それでも同じ方法を作る必要があります。しかし、最初の画面の選択を直接取得するのではなく、ルーティングメカニズムを介してデータを渡すことになります。
これは、ユーザーがウィンドウを更新すると、フィルタリングされたビューを取得します(最初の解決策ではなく、リフレッシュ後に常にフィルタリングされていないビューを取得する場合)。 UI5 Routing Walkthroughと同じ基本原理を使用して拡張することができます(つまり、フィルタを文字列として表現する必要があります。つまり、文字列を「選択」ビューの文字列に 'シリアル化'して、文字列をルータに渡します)。navTo
呼び出し次に、ワークリストビューの文字列を「デシリアライズ」します)。 walthroughからも次のステップを見てください。
もちろん、ユーザーが無制限または多数のフィルターを選択できる場合、この解決策はうまくいかないでしょう。
私はオプション1が好きです。必要なときに機能しています。ありがとう@ Serban。私はいつもビューイベントでいくつかのオプションを探していました。ルータのイベントを考えたことはありません。 – SriniRao