2012-01-29 57 views
3

比方說,我擁有大量的圖像模型,並且在任何時候,實際上只會渲染50個縮略圖視圖。我想給用戶選擇從集合中看到另外50張隨機圖像......所以我想給每個圖像模型一個onDisplay屬性。在backbone.js中,模型瞭解它的視圖是錯誤的嗎?

顯示隨機方法選取50個隨機項並將onDisplay設置爲true。其中一些項目可能已經被渲染......如果沒有,則創建新的縮略圖視圖並將其附加到圖像模型。如果視圖已經呈現,那麼它只是重新顯示/附加到DOM。

如果模型有一個指向它的指針,那麼檢查視圖的存在似乎是最容易的。但我在這裏違反了關注的分離嗎?

回答

8

在MVC設計模式中,模型不應該對視圖有任何瞭解。例如,這可以讓模型以多種方式查看,例如HTML或呈現在畫布元素中。

由此可看出下面的圖表所示:

MVC

模型可以更新僅查看間接地例如通過發射事件。

圖片複製來自here

0

你爲什麼不做一個處理緩存視圖的外部方法?當模型構建新視圖時,不是直接構建它,而是將參數傳遞給外部方法。

從模型的角度來看,它調用了一個通用的「給我一個視圖」函數。這是處理緩存的函數。然後,您可以更改該功能來更改行爲,而無需直接修改模型。

1

是的,我同意,你不需要將你的模型與他們的觀點相結合。

onDisplay屬性很好。如果所有圖像模型都位於集合中,則只需讓另一個「父」視圖監聽集合上onDisplay屬性的更改。

如果屬性發生變化時,「父」視圖可以然後渲染/刪除縮略圖視圖(因爲他們將子視圖)作爲必需的。