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 をクリックすると、モデルとして「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にあります。

4

2 に答える 2

0

user615276 が指摘したように、コントロール ヘルパーは Ember コードベースから削除されました。ビューを使用するだけで問題を解決しました。この jsbinを参照してください。

于 2013-10-24T14:15:06.257 に答える