我面临一个奇怪的问题。我已经设置了多条路径,它们命中相同的视图/视图模型,但过滤方式不同。例如:
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();
}
最后,在同一个虚拟机中,我有点击选项卡时的事件(即将到来、全部、存档),在视图之间切换:
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() 函数在允许激活函数返回之前等待多个承诺完成。
这可行,但是当我单击选项卡时,视图会立即加载,然后发生转换并再次加载视图,从而产生非常生涩的效果。有任何想法吗?