2013-01-04 45 views
7

我在理解Ember應用程序中控制器和路由之間的概念關係時遇到了一些麻煩。瞭解Ember中控制器和路由之間的關係

我已經開始了一個非常簡單的秒殺測試的路徑來評估Ember,並且我進入它的越深入,我越看到我的路線充滿我所經歷的應該是控制器的責任,例如行動,佈置模型,並最終調度到視圖來呈現模板。

控制器都是空的,似乎只是一些自動映射要求的佔位符。

我錯過了一個基本的東西 - 來自Rails的角度,並應用(也許是錯誤的)「軌道方式」到Ember我期望我的路線來定義由URL表示的狀態,這將映射到控制器「行動」。

任何指針將不勝感激。

+4

您是否看到最新的文檔?雖然他們沒有完成,但我認爲它會給你一些提示。 http://emberjs.com/guides/routing/ http://emberjs.com/guides/controllers/ –

+0

嘿不 - 他們已經更新了他們,因爲我上次看了,非常感謝。我會閱讀他們,看看他們是否協助:) –

+1

是的,我認爲來自Rails世界它不應該太難以理解......畢竟,Yehuda正在努力^^ –

回答

2

雖然模型類處理對象及其狀態,但控制器處理應用程序本身的狀態。

一個非常簡單的用例可能是您有兩種狀態表單:readonlyMode和modifyMode。這顯然不屬於定義實際對象的模型。這只是您的應用程序的狀態。

如果控制器說狀態爲readonlyMode,那麼視圖會將所有輸入字段呈現爲禁用狀態。反過來,爲modifyMode。

但我同意,並不總是容易決定把它放在哪裏。最後,MVC是關於概念的。不得不把它放入某種規則,我會說:

  • 所有代表持久數據(存儲在某種存儲/數據庫中)通常都是模型的一部分。
  • 一切有助於使您的應用程序狀態=>控制器。
+1

謝謝 - 我對MVC模式中模型的責任有着深刻的理解,這個問題與ember相關,它引入了路由器的概念,從我的角度來看,它似乎封裝了許多我期望的行爲在控制器中找到。雖然我在整個過程中逐漸清晰,但控制器和路由之間的關注分離開始變得更加清晰。 –

+0

是的。在我看來,舊的路由器API(1.0之前的pre3)誘惑開發人員投入很多路由。但是幾天前發佈的新API使用了更簡潔的方法。 我剛剛重寫了應用程序的組件以使用新的API。現在看起來更清潔,更好地分離。 –

+0

是的,我們剛剛更新了我們的路由器以適應新的風格 - 完全同意,pre3到路由器的更改使整個討論變得有點實際,現在更清晰了。 –