次のルート マップがあります。
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 をクリックすると、モデルとして「this」を渡す「data」という名前の新しいルートに遷移します。データ ルートでは、ツリーの残りの部分を表示したいと考えています。つまり、John をクリックすると、データ テンプレートで 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にあります。