Durandal的生涩过渡

时间:2013-05-10 09:59:38

标签: knockout.js durandal sammy.js hottowel

我面临一个奇怪的问题。我设置了多个匹配相同视图/视图模型的路由,但过滤方式不同。 E.g:

       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函数返回之前等待多个promises完成。

这样可行,但是当我单击选项卡时,视图会立即加载,然后发生转换并再次加载视图,从而产生非常不稳定的效果。有什么想法吗?

0 个答案:

没有答案