我正在构建一个可能受益于cacheViews设置为true或false的Durandal SPA,具体取决于应用的个人使用情况。 这就是我目前在shell.html中设置它的方式:
<div class="page-host" data-bind="router: { cacheViews:true }"></div>
在样本/ index.html中的子路由器中:
<div>
<!--ko router: { cacheViews:false }--><!--/ko-->
</div>
1)这些可以在运行时更改吗?如果是这样,怎么样?一个人使用数据绑定而另一个人使用ko评论风格是否重要?
2)这个值有多精细?它是&#34; router&#34;或者&#34;路线&#34;?正如你所看到的,我有一个父路由器和一个子路由器,所以我的html代码中有2个地方我可以设置cacheViews。从我的测试来看,它们看起来好像是彼此独立的。谁能确认一下?我可以在/#page1,/#page2,/ #samples / list等各个路线上设置此值吗?
3)因为页面事件生命周期在true / false之间是不同的,所以我需要在我的vm中有一些特定的逻辑,具体取决于这个值。如何检索当前路线?
由于
答案 0 :(得分:1)
1)这些可以在运行时更改吗?如果是这样,怎么样?
对于任何敲除绑定,如果绑定值触发订阅,则重新计算绑定。这意味着cacheViews
可以在运行时更改,如果它是可观察的。
我不确定执行此操作的正确方法是ko.observable({ cacheViews: false })
还是{ cacheViews: ko.observable(false) }
。事实上,我相信哪一个会起作用取决于你正在运行的淘汰赛的版本,但其中一个会起作用。
2)使用数据绑定而另一个正在使用是否重要 评论风格?
没有
3)这个值有多精细?它是&#34; router&#34;或者每个&#34;路线&#34;?
每台路由器。更具体地说,每个绑定。
4)我可以在/#page1,/#page2等各个路由上设置此值 / #samples / list等?
没有开箱即用,可让您为每条路线设置cacheViews 。 cacheViews
在compose绑定中处理,在路由器的引擎盖下调用,所以你需要挂钩。但是,Durandal非常适合在生命周期的每个部分为自定义逻辑公开钩子。我确信通过一些挖掘,您可以提出自己的定制来处理这个问题。
5)因为页面事件生命周期在真/假I之间是不同的 需要在我的虚拟机中有一些特定的逻辑,具体取决于此值。怎么样 我可以检索当前路线吗?
您可能希望在viewModel中从(1)创建observable并让关联的视图读取它,就像敲除中的任何其他可观察对象一样。然后,您将能够直接从viewModel访问当前值。例如:
viewModel = {
settings: ko.observable({
cacheViews: false
})
}
<!-- ko router: settings -->