2012-04-06 117 views
2

視圖更改時更新模型的正確方法是什麼?是否需要在視圖中或控制器等其他位置執行操作?backbone.js在視圖更改時更新模型的正確方法

例如我有一個模型(模型1)和一些視圖(視圖1)與此模型相關聯。當我更改視圖中的某些字段時,我需要更新模型。哪種方法是正確的?另外,我有一個與另一個視圖(View2)關聯的模型的集合,並且我需要將模型(model1)添加到該集合中。 第二個問題 - View1或Model1應該知道關於收集的信息,如果是 - 應該如何處理?

回答

1

有MVC理論,應用到MVC的有趣的方法...在這裏尋找更多的解釋什麼是控制器的骨幹

http://lostechies.com/derickbailey/2011/12/23/backbone-js-is-not-an-mvc-framework/

通過@德里克 - 貝利

總摘要寫,貝利說,有主幹沒有控制器。所以,我個人認爲,每個模型更新應該在與該模型相關的視圖中進行。

Backbone中的每個模型,何時被添加到一個或多個集合中並且被更新時,都會觸發它所屬的集合中的事件,所以您應該在視圖中監聽該事件。

在您的例子

  • View1.collection = [MODEL1];
  • View2.collection = [model1,model2,model3];

而且,當View1更改model1時,model1將觸發一個事件給View2.collection,您可以偵聽。

+0

但這樣可能會出現一些問題。例如,如果View訂閱了Model.change,並且我更改了視圖和更新後的模型,所以視圖將再次呈現 - 這當然是過度殺傷 – Ph0en1x 2012-04-06 14:55:36

+0

這就是爲什麼在視圖不可見時銷燬View是一種很好的做法,如果這是你的意思。 – drinchev 2012-04-06 15:47:41

+0

@ ph0en1x你永遠不應該離開你沒有使用的視圖。你會降低你的應用程序的性能,並可能導致殭屍事件觸發! – tkone 2012-04-07 00:08:55

0

控制器交談模式,所以是:當視圖改變爲更新你的模型正確的方法是通過你的控制器

+0

但據我瞭解,在骨幹控制器是視圖責任的一部分,對嗎? – Ph0en1x 2012-04-06 10:24:59