2013-02-11 30 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