2011-03-21 54 views
8

Data binding建立視圖和模型之間的直接耦合,從而繞過控制器。從根本上講,這與模型 - 視圖控制器體系結構模式相違背,我是否正確地考慮了這一點?這是否會使數據綁定成爲「壞事」?數據綁定與MVC從根本上不兼容嗎?

編輯:舉例來說,angular聲稱是一個MVC框架,但其主要功能之一是數據綁定。

+0

+1好問題! – Nilesh 2011-03-22 07:22:54

回答

5

在我看來,數據綁定可以是MVC模式的有效實現,因爲數據綁定機制本身在這種情況下充當控制器。

例如,在上面提到的角度看來,$ watch函數似乎是實現MVC風格方式中典型的控制器職責和功能的功能的快捷方式。

因此,我認爲數據綁定是一個演化步驟,它實現了通過實施經典 MVC控制器學到的最佳實踐。

UPDATE

但在原來的模式意義上,我將描繪數據更像MVP或Passive View結合。

但我認爲差異並不那麼尖銳,因爲它總是也取決於你的UI技術。

+0

+1好答案! – Nilesh 2011-03-22 07:24:08

5

不一定,因爲您不必將模型對象綁定到視圖。
我通常做的是創建簡單的DTO(或表示對象),其中只包含要顯示的數據,這就是View層顯示的內容。
在這種情況下,控制器保留其在DTO上執行的操作與底層Model實體上的操作之間的翻譯功能。

+0

+1好解釋! – Nilesh 2011-03-22 07:23:51

+0

數據綁定是一個附加功能,從我的角度使用(完全合理的)MV模式時,可從經常重複的任務中移除鍋爐板代碼。看看這裏:[mvc和databinding,什麼是最好的方法?](https://codingsoul.wordpress。COM/2016/04/15/MVC-數據綁定,什麼最最好的方法/) – 2016-04-15 09:33:02

0

實際上,當您的數據被正確抽象時,將模型內容推送到您的用戶界面是一件重複的任務,通常會導致某種「助手」。

讓我們假設將項目列表推送到組合框。這不一定是控制器的一部分,因爲您可能想分享這些功能。同時推動控制的價值(保持簡單,讓我們說文本框的文本)是重複的和雙向的。

在這裏你也重複你的自我(想想DRY),並做同樣的事情,並在 再次。

這正是數據綁定發揮作用的地方。這可以接管任何與簡單控件相同的任務(複選框,文本框,組合框)。對於網格控制等,它可能是特定的。

看一看mvc & databinding: what's the best approach?。這裏我將討論與MVC結合使用數據綁定時可能的最佳方法。