2012-02-23 59 views

回答

11

Knockout是一個可與javascript ViewModel配合使用的MVVM模式。這與MVC運作良好的原因在於,JSON中的JavaScript模型的序列化非常簡單。

此外,它將包含在MVC4中。下面是關於如何使用它在MVC4單頁的應用程序(與Microsoft的新的Web API功能)的視頻通過基因敲除的創造者:

http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2159

但好處是真的MVVM允許你開發豐富的用戶界面的編碼少得多(如果你熟悉Silverlight或WPF MVVM,你就會明白我的意思)。

給出的視圖模型:

var myViewModel = { myValue: 'some text' }; 

你並不需要綁定

$('#textBox').change(function() { myViewModel.myValue = $(this).val(); }) 

$('#textBox').val(myViewModel.myValue) 

所有的地方反向,或特殊的代碼處理在Knockout視圖中計算屬性。你可以用一個非常好的面向對象的方式做到這一切。

<input type="text" data-bind="value: myValue" /> 

而且所有的事件都是有線的。

+0

非常感謝保羅的及時答覆,在這裏閱讀更多。是的,我知道WPF中的MVVM,但我仍然無法在MVC應用程序中找到任何具體優勢,假設我在模型中有10個屬性,現在我必須在視圖中創建相同的10個屬性模型也綁定數據。那麼爲什麼我要做額外的代碼? – 2012-02-23 12:12:21

+0

數據更改時,用戶界面中的即時更改。如果你不需要「像現場一樣」的更新,那麼你不需要擊倒 – soniiic 2012-02-23 12:17:20

+0

好吧。所以這意味着如果有人更改爲我的數據,那麼UI將自動更新這些值,而無需向服務器發送任何請求? – 2012-02-23 13:07:38

2

的典型應用該類超支更加結構化的,靈活的客戶端JavaScript代碼。 你可以更好地分區的UI,可以走得這麼遠,你最終得到「一個單一的網頁」... 哪些只做json請求(如果你想)意味着較少的服務器往返響應較小等等......

而且對我來說,真的很酷認爲這是通過觀測綁定...

http://knockoutjs.com/documentation/observables.html

還檢查了這一點: MVC + Knockoutjs =客戶端MVVM幸福 http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2378

0

優點是很多的,一些突出的特點摘要如下:

  • 可行性與數據模型的UI元素隨時隨地連接。
  • 輕鬆創建複雜和動態的數據模型。
  • 數據綁定輔助操作存儲的數據,將其反映到用戶界面並用常規後端更改(如果有)更新UI。
  • 支持事件驅動的編程模型,並提供100%的定製。
  • 支持IE,Firefox,Safari,Bing,Chrome等多種主流瀏覽器。
  • 有助於避免在服務器上呈現邏輯和標記表示的HTTP對話的膨脹。
  • 它確保在網頁上應用業務規則,數據安全和更多控制。
  • 它還提供參考完整性和許多驗證 有關工作流程的額外安全性功能。
  • Knockoutjs提供出色的可擴展性。它有許多擴展點和用於構建應用程序的實用程序。

您可以從我們的文章https://cynere.com/advantages-of-knockoutjs