【问题标题】:Durandal (Jumpstar)- adding search sidebar pane for a results viewDurandal (Jumpstar) - 为结果视图添加搜索侧边栏窗格
【发布时间】:2013-03-29 13:19:03
【问题描述】:

我在 durandal 中创建了一个视图来显示产品列表。

我希望能够搜索这些产品,这就是为什么我想在侧边栏中添加一个仅针对该产品视图显示的搜索表单。

必须在产品视图之外声明侧边栏,这样每当我更改搜索表单中的过滤器时它就不会随之刷新。 意思是,我需要一个外部侧边栏来刷新视图,并且仅在该视图被激活时才会出现。

我不知道如何开始实施它以及最好的方法是什么。帮助会很棒。

【问题讨论】:

    标签: knockout.js durandal


    【解决方案1】:

    您可以在此处采用几种不错的方法,但最佳选择取决于您如何为搜索表单分配侧边栏区域。

    这取决于您希望产品视图模型和搜索表单的耦合程度。

    共享相同的视图模型(或其中的一部分):如果您可以在两个视图模型之间共享相同的 KnockOut 可观察对象,那么其余的几乎都是“一切照旧”。您可以通过在产品视图模型和搜索表单视图模型之间共享一个 ko.observable 来实现这一点。这可以通过以下方式之一完成:

    • 共享一个通用的视图模型库(这里有一些相关信息:View Model inheritance when using Durandal
    • 创建产品 VM 和搜索 VM 都需要的单独模块
    • 设置 Durandal 合成,使它们都使用字面上相同的视图模型。但是,这不是很直观,因此我不建议这样做。

    一旦您有一个可用的共享模型,您就可以从两个视图绑定到它,并且 KnockOut 的可观察性应该能够提供您需要的所有反馈。

    一种更松散耦合的方法是使用发布/订阅技术。这使得模块非常独立,但有相关的管理和维护后果,就像使用全局变量时一样。我只会在有必要让视图模型尽可能相互隔离时,或者当后勤系统不允许视图模型相互了解时才建议这样做。

    在发布/订阅方案中,搜索虚拟机仅发布产品虚拟机列出的事件,反之亦然。有许多提供此功能的 JS 库。它甚至被包含在 Durandal 中 - 这里有一些相关信息:Durandal: Leverage Publish and Subscribe 另请查看Durandal Event reference

    【讨论】:

      猜你喜欢
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多