1

我有一个包含两个子页面(医生/:id/index 和医生/:id/details)的路线(医生/:id)。这是我的 shell.html:

<div id="content-head">
   <h1>Page Title</h1>
</div>

<div id="content-main">
   <ul class="tabs" data-bind="foreach: router.navigationModel()">
      <li data-bind="css: { selected: isActive }"><a data-bind="attr: { href: hash }, text: title"></a></li>
   </ul>

   <div id="content-main-inner" data-bind="router: {}"></div>
</div>

<aside data-bind="compose: { model: 'doctors/_sidebar/index' , view: 'doctors/_sidebar/index' }"></aside>

侧边栏组成包括页面相关信息,例如统计信息和指向其他:id页面的链接。

在两个子页面之间导航时,我想保持侧边栏完好无损,但是当我从doctors/100到时doctors/200,我希望侧边栏刷新并给我新数据。有没有办法做到这一点?

4

2 回答 2

3

我建议您重构您的激活并从中取出数据加载代码,然后将其放入一个新函数中(根据需要由激活调用)。然后使用 Durandal 事件订阅一个事件,并重新加载该事件的数据。然后在您的其他“子页面”中,当它们加载、激活或其他任何内容时触发该事件。

于 2013-09-10T17:49:54.077 回答
0

您可以在撰写周围使用 if 绑定并像这样切换它:

<!-- ko if: $root.composeDimensionListShow -->
                    <!-- ko compose: here-->
<!-- /ko -->

使用像这样的javascript:

 vm.composeDimensionListShow = ko.observable(false);
 vm.composeDimensionListToggle = function () {
    vm.composeDimensionListShow(true);
    vm.composeDimensionListShow.valueHasMutated(); //knockout will normally not update if it is already true, but we want to refresh every time regardless
};

在某些情况下,另一个答案可能会更好,但在这样做不切实际的情况下,这会简单得多,并且可以更准确地回答您的问题。

当您想要刷新撰写时,只需调用 compositionlisttoggle()。

于 2014-03-04T14:27:39.487 回答