私は奇妙な問題に直面しています。同じビュー/ビューモデルにヒットする複数のルートを設定しましたが、フィルタリングは異なります。例えば:
router.mapNav('main/upcoming', 'viewmodels/items');
router.mapNav('main/all', 'viewmodels/items');
router.mapNav('main/archived', 'viewmodels/items');
ルーティングは正常に機能し、vm activate 関数で適切なアイテムを表示するためにフィルタリングを行っています。
function activate(r) {
switch (r.routeInfo.url) {
case 'main/upcoming': vm.filterType(1); break;
case 'main/all': vm.filterType(2); break;
case 'main/archived': vm.filterType(3); break;
}
return init();
}
最後に、同じ vm で、タブがクリックされたとき (Upcoming、All、Archived) のイベントがあり、ビューを切り替えます。
function toggleUpcoming() {
//vm.filterType(1);
router.navigateTo('#/main/upcoming');
}
function toggleAll() {
//vm.filterType(2);
router.navigateTo('#/main/all');
}
function toggleArchived() {
//vm.filterType(3);
router.navigateTo('#/main/archived');
}
init() 関数は、 activate 関数が戻るのを許可する前に、複数の promise が終了するのを待ちます。
これは機能しますが、タブをクリックするとすぐにビューが読み込まれ、次に遷移が発生してビューが再度読み込まれるため、非常にぎくしゃくした効果が生じます。何か案は?