我有一個應用程序與許多類似的意見,我編程實例化「幹」我的應用程序。 問題是控制器以編程方式實例化不進一步委託actions
散列中的動作。這很明顯,因爲控制器無法從中推導出層次結構。然而,應該有辦法告訴控制器它必須使用哪個父控制器來進行事件冒泡。有人知道嗎?以編程方式創建控制器委託(泡泡)事件
1
A
回答
2
你不應該自己初始化控制器。所有的控制器初始化應該由Ember自己處理。另一個有趣的記錄,控制器的目的是在應用程序中的單身人士。當循環訪問ArrayController時,唯一的例外是itemController。你可以閱讀更多關於它in the guides。從導遊報價:
在Ember.js應用程序,你會始終指定你的控制器作爲 類和框架,負責實例他們 它們提供給您的模板。
這使測試您的控制器非常簡單,並確保您的整個應用程序共享一個控制器的單個實例。
更新1:
如何執行路由爲一個嚮導的示例:
App.Router.map(function() {
this.resource('wizard', function() {
this.route('step1');
this.route('step2');
this.route('step3');
});
});
這種方式,可以有一個單獨的控制器/視圖/每的步驟模板嚮導。如果您在轉換到下一個步驟之前應完成每個步驟的完成程度的邏輯,則可以在單個路徑中處理該步驟。
更新2:
在該步驟的數量不是預先確定的,而是基於該數據被饋送到該應用的情況下,可以使一個WizardController即一個ArrayController其中每個項目在陣列中是嚮導中的一個步驟。然後,使用lookupItemController
勾上ArrayController,有點像這樣:
App.WizardRoute = Ember.Route.extend({
model: function() {
return [
{controllerName: 'step1', templateName: 'step1'},
{controllerName: 'step2', templateName: 'step2'},
{controllerName: 'step3', templateName: 'step3'}
];
}
});
App.WizardController = Ember.ArrayController.extend({
lookupItemController: function(modelObject) {
return modelObject.controllerName;
}
});
{{#each step in controller}}
{{view Ember.View templateName=step.templateName}}
{{/each}}
至於另一個,可能會更好,或者,也可以在那裏你拉低模式,爲未來覆蓋路由的renderTemplate鉤步驟在嚮導中,並在渲染調用中傳遞適當的templateName和控制器,有點像你see here。
問題是,我認爲應該可以做到這一點,而無需自己實例化控制器。
相關問題
- 1. 在JavaFX中以泡泡形狀創建文本編輯器
- 2. 編程方式火DOM事件委託
- 3. 事件冒泡和鏈接事件的委託
- 4. Highcharts 3.0泡泡圖 - 控制泡泡尺寸
- 5. ASP.Net用戶控制事件冒泡(C#)
- 6. UITableView以編程方式創建委託對象?
- 7. 創建委託事件
- 8. 泡泡方案
- 9. 冒泡事件。
- 10. vb.net以編程方式創建控件
- 11. REALBasic - 以編程方式創建控件
- 12. 以編程方式創建的控件檢測iOS UI事件
- 13. 使用jsqmessegesviewcontroller創建自定義泡泡
- 14. 泡泡自定義事件下降
- 15. 泡泡鼠標事件到iframe
- 16. 如何阻止事件泡泡
- 17. 事件泡泡問題(我想..!)
- 18. 以編程方式在委託中調用故事板
- 19. 氣泡圖創建
- 20. 如何在泡泡中添加氣泡事件higharts
- 21. 在C中冒泡WPF控件事件#
- 22. .NET用戶控件事件冒泡
- 23. C#事件冒泡
- 24. Onclick事件冒泡
- 25. Winforms冒泡事件
- 26. 事件不冒泡
- 27. JavaScript事件冒泡
- 28. 是否可以用Highcharts創建泡泡極座標圖?
- 29. 事件冒泡 - 兒童控制Mousehover事件
- 30. 通過XAML中的元素製作觸摸事件泡泡
理論上,從架構的角度來看,你是對的,但我認爲我的應用程序足夠複雜,我可以想到沒有更好的方法。另一種方法是大規模代碼重複。我將其用於嚮導組件,其中嚮導中的每個步驟都是不同的,因此需要不同的控制器/視圖。該組件本身用於實現具有不同步驟的許多不同的嚮導。 – vanthome
我可以想到處理這個問題的幾種不同的方法,這些方法都停留在ember約定的領域。我在通過ember路由工作的Ember應用中構建了一個嚮導,假設嚮導中的步驟具有一定的確定性,這非常合適。我不能在我的評論中放置代碼示例,因此我會更新我的答案以包含代碼示例。 – Adam
雖然這確實起作用,但我的嚮導組件並不需要定義每個步驟。我有一個動態段的路由,並且一個步驟的視圖/控制器是通過命名約定動態確定的。 與往常一樣,任何解決方案都有其優缺點,不想進一步討論。 – vanthome