2

我正在尝试使用 Durandal 2.0.1 使 router.navigateBack 功能正常工作。

我有一个视图模型,可以创建一个我们称之为领导的实体。创建新潜在客户后,我想替换 uri,使其具有编辑潜在客户路线而不是创建潜在客户路线,并在历史记录中替换它。保存后我调用以下函数:

router.navigate('#lead/' + vm.lead().id(), { replace: true, trigger: false });

这是我的配置文件中的路线描述

{
    route: 'lead(/:leadId)',
    moduleId: 'lead/lead'
}

然后当我打电话时

router.navigateBack();

它导航到预期的路线,但总是会导致整个页面刷新。我试图避免整个页面刷新并像往常一样简单地导航。

在 durandal 1.0 中,我曾经只是调用

router.replaceLocation();

要完成同样的任务,它会很好地工作。我想知道我是否在这里遗漏了什么。

4

1 回答 1

1

尝试以下操作:

var leadId = vm.lead.peek().id.peek();
router.navigate('#lead/' + leadId, { replace: true, trigger: false });

我相信您的 observable 具有导致完全重新计算的依赖关系。我们可以使用 Knockoutpeek()来获取一个值,而无需创建依赖项。

于 2014-04-22T05:00:22.217 回答