【问题标题】:End to end MVVM using knockout (javascript)使用淘汰赛的端到端 MVVM (javascript)
【发布时间】:2013-02-11 23:39:15
【问题描述】:

我是 MVVM 的新手,我想了解, 如果你在后端有一个模型,比如说一个 c# 库,它正在从数据库或任何其他服务中获取数据。模型将如何通知视图模型。 我了解在 MVVM INotifyprovier 中为 WPF 执行此操作(只是在某处阅读),但是基于 Web 应用程序的场景怎么样,Java 脚本中的 Viewmodel 是否总是必须 ping 模型以识别模型中是否有更改,然后传播到用户界面。 我假设视图模型总是必须以 10 分钟左右的设置间隔将 Ajax 请求发送到 asmx 或 api(只是一个示例)。 这就是它端到端的工作方式。任何例子都会很棒。

因为其中一个属性是自动 UI 刷新,所以我假设需要定期从服务器询问新数据。我在网上看到的很多例子只是 ViewModel 和 View 之间的交互,但我几乎看不到 Model、ViewModel 和 View 结合在一起的任何东西。

我可以认为,如果使用 SignalR 从服务器向客户端发送 ping,则可以更新 Viewmodel 并因此更新 View。

但是,如果每次您需要从 Sever 询问一组新数据,那么 Knockout 的炒作是怎么回事,Jquery 已经做了一段时间了,除了声明性绑定的东西,在淘汰赛库中。

如果有人可以纠正我,不胜感激。

谢谢

标签: javascript mvvm model knockout.js knockout-mvvm


【解决方案1】:

由您的客户端应用程序来获取新数据,因为服务器没有任何可观察对象的概念。还有一个有用的 mapping plugin 可以自动将您的 JavaScript 数据从服务器映射到 observable。这样,当您获取数据时,您不必重新映射数据。

但是,可以将服务器的更改通知客户端。一种方法是通过 HTML5 WebSockets 对客户端进行服务器推送更改。 SignalR 是该任务的一个很好的库候选者。它将打开 WebSockets 连接,以便服务器可以通知客户端更改。您将使用 Service Broker SqlDependency 来触发更新事件通知。一个例子可以在here找到。

祝你好运!

这里还有a really good video 来观看knockoutjs,这将使您了解框架。

【讨论】:

  • 谢谢,但是这里的模型在哪里,模型是否被引用到服务器。在 knockoutjs.com 中没有关于模型的文档,理想情况下,如果不使用 websockets 和 signalR,您将如何使用 ViewModel 中的代码向服务器发送请求以定期请求新数据(如解释在问题中)只是好奇。
  • 这是对模型的解释:) knockoutjs.com/documentation/…。是的,你需要在没有 WebSockets 的情况下每隔一段时间轮询数据。
猜你喜欢
  • 1970-01-01
  • 2013-12-18
  • 2012-06-13
  • 2013-08-19
  • 2014-05-01
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多