2012-10-03 50 views
1

Trek's tutorial:是否必須爲每個Ember.js應用程序顯式創建一個ApplicationView和一個ApplicationController?

您的應用程序必須有一個ApplicationView財產。的 這個類的一個實例會爲您創建並插入到應用程序的 視圖層次的根視圖。

而且教程給出了這樣的例子代碼:

App.ApplicationView = Ember.View.extend({ 
    templateName: 'application' 
}); 

App.ApplicationController = Ember.Controller.extend(); 

什麼特別之處ApplicationViewApplicationController?他們的名字是保留的,必須通過轉換來使用,還是路由器引用它們的方式有些特殊之處?

據我瞭解,Ember的負責人之一是消除樣板代碼。所以我猜測還有更多東西需要爲每個應用程序明確創建這兩個視圖作爲起點 - 否則Ember只會在幕後爲我提供這些視圖。

爲了改變我的問題,ApplicationViewApplicationController在Ember應用程序中是什麼特別。我是否需要爲每個應用程序明確創建它們?如果需要,我是否需要按照約定命名它們?

注:我使用的餘燼,最新

回答

5

Ember.js試圖堅持約定優於配置的編程思想。正因爲如此,有些事情需要專門命名,並遵循正確的套管規則。在撥打App.initialize()後,您的申請將自行尋找App.ApplicationView。你的應用程序,然後渲染這一觀點,將其插入到DOM和自動創建的App.ApplicationController一個實例,將其設置爲您ApplicationView渲染上下文。這意味着您的ApplictationController中的任何屬性只需通過在視圖中引用即可綁定到您的ApplicationView中。

如果你打電話App.initialize()而不是App.ApplicationViewApp.ApplicationController燼將會拋出一個錯誤,讓你知道你必須創建它們。

ApplicationViewApplicationController是你燼應用程序的組成部分,必須存在。 Ember公司是一個MVC框架,ApplicationView是你的根V,ApplicationController是你的根C.這是很有誘惑力的嘗試使用框架,如灰燼只是你想要的作品,但只是一點點更多的工作,你就會有一個很大更強大,易於使用的應用程序,試圖櫻桃選擇功能。

+0

+1了很好的解釋。如果沒有定義「App.ApplicationView」,您是否有任何參考或示例代碼顯示了ember會拋出錯誤?原因是我到目前爲止還沒有在我的任何jsFiddles中定義它,並且我沒有看到錯誤。 – Aras

+0

另外我認爲,ember-latest已經通過將'autoinit'設置爲'true'來取消調用'App.initialize()'的需要。這對這種情況有影響嗎? – Aras

+1

@Aras不,這不應該有效果。該應用程序是自動初始化的,但始終需要ApplicationView和ApplicationController –

相關問題