Durandal 2.0:在使用新数据保持相同视图时不会触发转换

时间:2013-09-10 14:08:34

标签: durandal

这是我的shell:

<div>
    <div id="content" class="container-fluid page-host main">
        <!--ko router: { transition:'entrance', alwaysTriggerAttach: 'true', cacheViews: 'true' }--><!--/ko-->
    </div>
</div>

我总是使用以下方式导航到视图:

router.navigate(route);

现在,当处于某个视图(项目)并调用另一个id(/#item / id)的导航功能时,数据会正确更改,但转换不会发生。

有什么建议吗? 感谢

尼古拉斯

1 个答案:

答案 0 :(得分:1)

在durandal / js / composition.js的函数中定义了触发转换:

function shouldTransition(context) {
if (system.isString(context.transition)) {
    if (context.activeView) {
        if (context.activeView == context.child) {
            return false;
        }

        if (!context.child) {
            return true;
        }

        if (context.skipTransitionOnSameViewId) {
            var currentViewId = context.activeView.getAttribute('data-view');
            var newViewId = context.child.getAttribute('data-view');
            return currentViewId != newViewId;
        }
    }

    return true;
}

return false;

如果要触发转换然后在同一视图中导航,可以对if语句进行注释:

if (context.activeView == context.child) {
   return false;