我正在尝试使用Durandal 2.0.1使router.navigateBack功能正常工作。
我有一个viewmodel可以创建一个我们称之为lead的实体。在创建新的潜在客户之后,我想要替换uri,使其具有编辑引导路线而不是创建引导路线,并在历史记录中替换它。保存后我调用以下函数:
router.navigate('#lead/' + vm.lead().id(), { replace: true, trigger: false });
这是配置文件中的路由描述
{
route: 'lead(/:leadId)',
moduleId: 'lead/lead'
}
然后我打电话给
router.navigateBack();
导航到预期路线但总是会导致整页刷新。我试图避免整页刷新,只是像往常一样导航。
在durandal 1.0中我曾经只是打电话
router.replaceLocation();
要完成同样的任务,它会运作良好。我想知道我是否在这里遗漏了一些东西。
答案 0 :(得分:1)
尝试以下方法:
var leadId = vm.lead.peek().id.peek();
router.navigate('#lead/' + leadId, { replace: true, trigger: false });
我相信你的observable有依赖性导致完全重新计算。我们可以使用Knockout的peek()
来获取值,而不会创建依赖项。