2013-02-11 55 views
0

我是MVVM的新手,我想了解, 如果您在后端有模型,请说ac#库,它从数据库或任何其他服务获取数据。该模型将如何通知视图模型。 我明白在MVVM INotifyprovier为WPF做了这些(只是在某处阅读),但基于Web应用程序的场景如何,Java脚本中的Viewmodel总是必须ping模型以确定模型中是否有变化,然后传播到UI。 我假设viewmodel总是必须发送Ajax请求到一个设定的间隔10分钟左右的asmx或api(只是一个例子)。它是如何工作的,是端到端的。任何例子都会很棒。使用敲除的端到端MVVM(javascript)

因为其中一个属性是自动UI刷新,所以我假设需要定期从服务器询问新数据。我在网上看到的很多示例只是在ViewModel和View之间进行交互,但很难将Model,ViewModel和View全部组合在一起。

我可以认为,如果使用SignalR从服务器发送ping到客户端,那么Viewmodel可以被更新,因此可以更新View。但是,如果每次你需要从Sever获得一组新数据,那么Knockout的炒作有什么用呢,Jquery已经在knockout库中除了声明性绑定的东西之外这么做了一段时间。

欣赏有人能纠正我。

感谢

+0

如果您通过[KnockoutJS教程](http://learn.knockoutjs.com/)和/或阅读[相关文档](http://knockoutjs.com/documentation/json-data)。 html)的东西应该变得非常清楚。另外,您可能需要阅读[WebSockets](https://developer.mozilla.org/en-US/docs/WebSockets)及其备用/替代方案。 – Jeroen 2013-02-11 23:49:45

+0

谢谢Jeroen,我做过,但有这个问题,一切如何融合在一起。 我用更多的评论更新了我的问题。 因此,根据您发送的链接,模型实际上是后端,对吧? 对于JavaScript中的MVVM(敲除),这里只有ViewModel和View。 ViewModel是将请求发送到服务器的人,对吗? – Rahul 2013-02-11 23:54:44

回答

1

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

但是,可以向服务器通知客户端的变化。一种方法是通过HTML5 WebSockets将服务器更改推送到客户端。 SignalR是该任务的一个很好的库候选人。它将打开一个WebSockets连接,以便服务器可以通知客户端的变化。并且您将使用Service Broker SqlDependency触发更新事件通知。例如可以发现here

祝你好运!

另外这里是a really good video观看knockoutjs,这将让你了解框架。

+0

谢谢,但这里的模型在哪里,是模型被引用到服务器。如果没有使用websockets和signalR,你会如何使用ViewModel中的代码向服务器发送请求,以在固定的时间间隔内请求新数据(如在问题中解释) 只是好奇。 – Rahul 2013-02-12 00:04:15

+1

这是关于模型的解释:) http://knockoutjs.com/documentation/observables.html#mvvm_and_view_models。是的,你需要在没有WebSocket的情况下间隔轮询数据。 – Sergey 2013-02-12 00:15:06