2013-10-23 24 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