1

使用例は、{{outlet}} に表示されるインデックス リストがあり、各アイテムの詳細ビューを「アプリケーション」が所有する同じアウトレットに表示することです。これは問題ありません:

renderTemplate: (controller, model)->
this.render('show', {
  into: 'application'
});

ただし、問題は、インデックス ページに戻ると、{{#linkTo 'index'}}Index{{/linkTo}}インデックス ビューがレンダリングされなくなることです。

コンソールに次のエラーがスローされます。 Uncaught TypeError: Cannot call method 'connectOutlet' of undefined

問題を再現するフィドルは次のとおりです。 http://jsfiddle.net/genkilabs/spAbn/3/

すべての子ビューをアプリケーションのメイン アウトレットに表示する正しい方法は何ですか?

4

1 に答える 1

1

必要なのは、ルートを入れ子にするのではなくshow、ルートと平行になるようにシフトすることだけです。index

App.Router.map ->
  @resource 'index', path: '/'
  @resource 'show', path: ':person_id'

問題は、showルートがもともとルート内にネストされていたことindexです。renderTemplate呼び出しは元のindexテンプレートをテンプレートで上書きしましたshowが、Ember はまだindexテンプレートが階層に存在することを期待していました。

JSFiddle の例

于 2013-09-25T21:54:11.917 に答える