我在updateDocumentTitle
函数中使用了一个observable,它在完成ajax请求后得到一个新值。但我注意到updateDocumentTitle
函数在observable改变其值后不会再次触发。
userShell.prototype.router.updateDocumentTitle = function(instance, instruction) {
document.title = instance.userArr().name();
};
我尝试将updateDocumentTitle
的内容包装在计算的observable中,但出于某种原因,当我在同一个shell(users / 100到users / 105)下的用户页面之间导航时,会调用计算的observable多次,因为我在页面之间导航而没有刷新。
有没有其他成功的方法来设置动态文档标题?
答案 0 :(得分:0)
当 updateDocumentTitle()
触发时与您的AJAX请求成功完成之间的竞争。
你的AJAX调用在哪里进行,其中viewModel的Durandal处理程序?您可以选择activate
,attached
和compositionComplete
个处理程序。
<强> [编辑] 强>
在这种情况下,您需要放弃updateDocumentTitle()
。只需在viewModel中创建一个observable即可。成功完成AJAX调用后,从activate
处理程序更新observable 。确保绑定到视图中的observable。我们实际上是出于你需要的原因而自己做的。
为了提高稳定性,请确保在AJAX调用失败时提供默认标题。