在Durandal 2.1.0中设置动态页面标题

时间:2014-06-25 18:05:12

标签: javascript knockout.js durandal durandal-2.0

我在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多次,因为我在页面之间导航而没有刷新。

有没有其他成功的方法来设置动态文档标题?

1 个答案:

答案 0 :(得分:0)

updateDocumentTitle()触发时与您的AJAX请求成功完成之间的竞争。

你的AJAX调用在哪里进行,其中viewModel的Durandal处理程序?您可以选择activateattachedcompositionComplete个处理程序。

<强> [编辑]

在这种情况下,您需要放弃updateDocumentTitle()。只需在viewModel中创建一个observable即可。成功完成AJAX调用后,从activate处理程序更新observable 。确保绑定到视图中的observable。我们实际上是出于你需要的原因而自己做的。

为了提高稳定性,请确保在AJAX调用失败时提供默认标题。