2012-08-06 81 views
1

也許有些人就是知道答案的命名慣例,但我想了解以下信息:混淆在emberjs

說你是宣告一個觀點:

App.FooView = Ember.View.extend({});

現在引用這一觀點在App.Router導致以下錯誤:

router.get('applicationController').connectOutlet('Foo')

當我參考Foo控制檯狀態:Uncaught Error: assertion failed: The name you supplied Foo did not resolve to a controller FooController

我找不到解釋參數的文檔中的任何地方。或許那些沮喪的人實際上可以爲解決方案做出貢獻。

+0

'.connectOutlet('foo')'中的「foo」應該是小寫的(不確定這是否是絕對必要的),因爲我相信你在編輯之前已經有了它。你也需要一個控制器:'App.FooController = Ember.Controller.extend({});'(不是我誰downvoted) – dechov 2012-08-06 18:39:35

回答

1

當您連接插座時,路由器會查找與提供的控制器和視圖名稱相同的控制器和視圖。在列出的示例中,路由器正在查找FooController和FooView,但未找到控制器。如果你想指定更多的細節,你可以傳遞一個選項與視圖,控制器和上下文對象,就像這樣:

router.get('applicationController').connectOutlet({ 
      outletName: 'master', 
      controller: 'fooController', 
      view: 'fooView', 
      context: data 
     }); 

從文檔:

connectOutlet: function(name, context) { 
// Normalize arguments. Supported arguments: 
// 
// name 
// name, context 
// outletName, name 
// outletName, name, context 
// options 
// 
// The options hash has the following keys: 
// 
// name: the name of the controller and view 
//  to use. If this is passed, the name 
//  determines the view and controller. 
// outletName: the name of the outlet to 
//  fill in. default: 'view' 
// viewClass: the class of the view to instantiate 
// controller: the controller instance to pass 
//  to the view 
// context: an object that should become the 
//  controller's `content` and thus the 
//  template's context. 

編輯:語法和編碼格式

+0

@ buuda我在emberjs網站的更新指南或多或少遇到這個 - 謝謝提供我可以使用的答案。 – rhodee 2012-08-06 18:45:27