2013-10-23 37 views
0

當工作我有以下路線圖:灰燼{{控制}}車把助手在出口停止開關插座模型

App.Router.map(function() { 
    this.resource("data", {path: "data/:data_id"}); 
}); 

我的應用程序模型具有樹狀結構如下:

[ 
    { 
    id:0, 
    text:"John", 
    children:[ 
     { 
     id:2, 
     text:"Max" 
     }, 
     { 
     id:4, 
     text:"Mireille", 
     children: [ 
      { 
      id:5, 
      text:"Michael" 
      } 
     ] 
     } 
    ] 
    }, 
    { 
    id:1, 
    text:"Alex", 
    children: [ 
     { 
     id:3, 
     text:"Laetitia" 
     } 
    ] 
    } 
] 

我想在我的應用程序模板中顯示我的樹的主「父母」(深度爲零)作爲列表(所以John和Alex在這裏)。當點擊John或Alex時,我們轉換到名爲「data」的新路線,將「this」作爲模型傳遞。在數據路徑中,我想顯示樹的其餘部分:因此,如果我單擊約翰,我希望數據模板向我顯示他所有孩子的嵌套列表。由於樹的深度是不確定的,我使用實驗性的handlebars {{control}} helper遞歸地生成嵌套列表。

當我點擊John或Alex時,它正常工作。但是當我想切換到另一個(所以通過點擊其他名稱來更改傳遞給「數據」路徑的模型),然後我得到奇怪的消息錯誤。首先,我得到:

Uncaught TypeError: Cannot call method 'lookupFactory' of undefined 

然後,如果我繼續嘗試點擊,我得到:

Uncaught Error: Something you did caused a view to re-render after it rendered but before it was inserted into the DOM. 

示例應用程序出現此問題可以在this jsbin找到。

回答

0

正如user615276指出的,控制助手已經從Ember代碼庫中刪除。我通過使用視圖解決了這個問題。見this jsbin

1

很有可能不是回答你尋找,但,看來你正在使用的控制幫助,這是實驗性的,而不是公共API的一部分,並一直從代碼中刪除了:

https://github.com/emberjs/ember.js/commit/86eecd7ef7cdc7d2ea6f77b3a726b293292ec55d

如果您可以在沒有控制助手的情況下重現,我會很樂意診斷問題。

+0

任何關於如何在沒有控制助手的情況下遞歸創建樹的提示? – cwarny

+0

我會調查使用ContainerView。 –

+0

[This jsbin](http://jsbin.com/oTaPECI/1/watch?html,js輸出)解決了這個問題。感謝您指出控制幫手已被刪除。 – cwarny