2015-08-29 109 views
2

我現在正在學習MVC,剛剛通過控制器修改模型時,它可以通知視圖更新模型中的數據。雖然我很困惑。由於模型是由控制器而不是自己或其他東西修改的,它應該是控制器將更新通知發送到視圖。此外,我還沒有找到任何這種模型到視圖通信的例子,請給我一個清楚,如果有人理解這個想法很好。MVC中的模型到視圖通信?

回答

0

查看通信的模型通常通過Observer模式完成。視圖中的代碼往往會比模型中的代碼更改,因此模型 - 視圖分離意味着模型元素不直接依賴視圖元素。您可以添加或更改視圖代碼,並且模型代碼不受影響。

狀態改變的模型元素只是通知其所有觀察者。由於控制器或其他原因(值隨時間變化)可能會發生狀態更改。

具體見https://msdn.microsoft.com/en-us/library/ff649643.aspx如下:

0

MVC的核心組件model捕獲應用程序在問題域方面的行爲,而與用戶界面無關。 model直接管理應用程序的數據,邏輯和規則。 A view可以是信息的任何輸出表示,例如圖表或圖表。 第三部分controller接受輸入並將其轉換爲modelview的命令。

通常,controller接收用戶輸入,如按鍵和鼠標點擊,並基於此修改model。當model更改view需要更新以反映更改。

有幾個選項如何實施view更新。

A)view更新可以通過在修改model後直接從controller調用它來實現。有關示例,請參見here

B)view更新可以使用Observer模式實現。在這種情況下,每當model發生相關更改時,model就會在view上觸發更新事件。有關示例,請參閱here

+0

我們爲什麼需要第二個方法是什麼?我認爲這是控制器改變模型,它可以通過方式通知視圖。 –

+0

我刪除了第二個選項以保持簡單。感謝評論@ Ivan814 – iluwatar

+0

我認爲你沒有明白我的觀點,第二種選擇是我在這個問題上關注的。 –