javascript - 在 knockout.js 中重用 ViewModel 之间的数据

标签 javascript knockout.js knockout-2.0 breeze

我有一个由 AJAX 调用填充的 items 数组,它在网页上显示每个项目的几个数据字段。

现在我需要让用户点击一个项目,该项目会填充侧边栏,其中包含从上一个 AJAX 请求中收到的数据(一些字段以及更多)。

我想通常人们会采用 id 并执行特定于 item 的 AJAX 请求,通过 Sammy.js 将其路由,但我们不需要这样做。

我是 knockout 的新手;我想象的最好的策略是为各种 div 提供一个 ViewModel 来显示数据,但是如何让 ViewModels 在它们之间传递数据呢?这是禁忌吗?

  • 通过窗口对象引用其他窗口?
  • 使用 with: 关键字?它不断出现,但我看不出如何在这种情况下应用它。
  • 也许通过 Sammy.js,并在 Amplify 中缓存数据?

这是一个向下钻取功能的示例,我已经阅读了一些关于此的 StackOverflow 问答,但找不到我可以使用的东西。我已经按照 John Papa 的 PluralSight 教程进入了这个阶段。

最佳答案

您可能希望使用带有 Amplify 的消息传递或 @RPNiemeyer 上面提到的库的发布/订阅模型。两者都很棒。

但是听起来您只是想从服务器获取数据,然后在多个 View 模型中使用该数据。甚至可能在多个 View 模型中共享一些数据。我的 SPA 教程中的数据上下文概念允许您在数据上下文中托管数据并从其他 View 模型引用它。

您还可以使用像 Breeze 这样的库来帮助执行此操作(Breeze 将替换我的 SPA 中的数据上下文......并且会做得更好,我将在即将到来的类(class)中展示)。

这些只是几个选项

关于javascript - 在 knockout.js 中重用 ViewModel 之间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13478705/

相关文章:

javascript - Foreach 数据未通过 Knockout Js Object Observable 反射(reflect)到 UI

javascript - v6 : React-table multiple selection issue

带有 knockout 功能的 jQuery 表排序器 - 添加行

javascript - Knockout.js - $parent 未按预期工作

javascript - 何时将扩展附加复杂类型添加到 Breeze 实体上

internet-explorer - knockout 中的内存泄漏

javascript - 无法处理绑定(bind) - 绑定(bind)不是函数

javascript - 关于这个和 javascript 中的 self

javascript - 全局颜色不透明度悬停叠加?

Javascript 性能 - Dom Reflow - Google 文章