我有以下路线图:
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”作为model传递。在数据路由中,我想显示树的其余部分:所以如果我点击了John,我希望数据模板向我显示他所有孩子的嵌套列表。由于树的深度是不确定的,我使用实验把手{{control}}助手递归生成嵌套列表。
当我单击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.
可以在此jsbin中找到显示此问题的示例应用程序。
可能不是你要找的答案,但是,看起来你正在使用控制助手,它是实验性的,不是公共api的一部分,并且已经从代码库中删除:
https://github.com/emberjs/ember.js/commit/86eecd7ef7cdc7d2ea6f77b3a726b293292ec55d
如果您可以在没有控制助手的情况下重现,我很乐意诊断问题。
正如user615276所指出的,控制助手已从Ember代码库中删除。我只使用视图就解决了这个问题。请参阅此jsbin。