我有一个由 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/