【问题标题】:Is Durandal router "cacheViews" property accessible and changeable at runtime?Durandal 路由器“cacheViews”属性是否可在运行时访问和更改?
【发布时间】:2014-12-18 03:27:03
【问题描述】:

我正在构建一个 Durandal SPA,它可能会受益于 cacheViews 设置的 true 或 false,具体取决于应用程序的个人使用情况。 这就是我目前在 shell.html 中设置的方式:

<div class="page-host" data-bind="router: {  cacheViews:true }"></div>

在像 samples/index.html 这样的子路由器中:

<div>
    <!--ko router: {  cacheViews:false }--><!--/ko-->
</div>

1) 这些可以在运行时更改吗?如果是这样,如何?一个使用 data-bind 另一个使用 ko 注释样式有关系吗?

2) 这个值有多细?是每个“路由器”还是每个“路由”?如您所见,我有一个父路由器和一个子路由器,所以我的 html 代码中有两个地方可以设置 cacheViews。从我的测试来看,它们似乎是相互独立的。任何人都可以确认吗?我可以在 /#page1、/#page2、/#samples/list 等单个路由上设置此值吗?

3) 因为页面事件生命周期在真/假之间是不同的,我需要在我的虚拟机中根据这个值有一些特定的逻辑。如何检索当前路线?

谢谢

【问题讨论】:

    标签: caching views durandal router


    【解决方案1】:

    1) 这些可以在运行时更改吗?如果有,怎么做?

    对于任何淘汰绑定,如果绑定值触发订阅,则重新计算绑定。这意味着cacheViews 可以在运行时更改如果它是可观察的

    我不确定正确的做法是ko.observable({ cacheViews: false }) 还是{ cacheViews: ko.observable(false) }。事实上,我相信哪一个会起作用在某种程度上取决于你正在运行的淘汰赛版本,但其中一个会起作用。

    2) 一个使用 data-bind 而另一个使用是否重要 ko 评论风格?

    没有。

    3) 这个值有多细?是按“路由器”还是按“路由”?

    每个路由器。更具体地说,每个绑定

    4) 我可以在像 /#page1、/#page2、 /#samples/list 等?

    没有什么可以让您为每条路线设置 cacheViewscacheViews 在 compose 绑定中进行处理,该绑定在路由器的后台调用,因此您需要在其中进行挂钩。然而,Durandal 非常擅长在自定义逻辑的生命周期的每个部分公开钩子。我敢肯定,只要稍微挖掘一下,您就可以自己定制来处理这个问题。

    5) 因为页面事件生命周期在真/假之间不同我 需要根据这个值在我的虚拟机中有一些特定的逻辑。如何 我可以为当前路线检索它吗?

    您可能希望在 viewModel 中从 (1) 创建 observable,并让关联的视图读取它,就像淘汰赛中的任何其他 observable 一样。然后,您将能够直接从 viewModel 访问当前值。例如:

    视图模型

    viewModel = {
        settings: ko.observable({
            cacheViews: false
        })
    }
    

    查看

    <!-- ko router: settings -->
    

    【讨论】:

    • 如果您觉得这有帮助,请不要忘记点赞并接受
    • 非常好主意将它设置在 vm 中并使用 observable。我无法让它完全按照您的代码工作。我将设置变量设为可观察: var settings = ko.observable( { cacheViews: true } );然后在运行时更新 var setCacheViews = function (val) { settings({ cacheViews:val }) };
    • 哈哈我不确定哪个会这样做,但我知道它会是其中之一。我将编辑我的代码。
    猜你喜欢
    • 2016-01-14
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    相关资源
    最近更新 更多