3

私は投稿に基づくアプリを持っています。次のようにルートをネストすると:

this.resource('posts', function() {
  this.route('post', {path: ':post_id'});  
});

/posts/id リンクにアクセスしようとすると、投稿テンプレートに {{outlet}} を配置した場合にのみテンプレートがレンダリングされます。

githubに基づいて作業しているコードは次のとおりです。アプリケーション アウトレットではなく、親アウトレットにレンダリングすることを除いて、すべての機能を備えています。

アプリケーション {{outlet}} で、show、new、または edit テンプレートにそのテンプレートをレンダリングさせることは可能でしょうか?

4

3 に答える 3

2

renderTemplate(controller, model)ルートと呼び出しのフックをオーバーライドできますthis.render:

renderTemplate: function(controller, model) {
  this.render('post',    
  {
    into: 'appplication',                // the template to render into
  });
}

渡すことができるその他のオプションはoutlet、(名前付きアウトレットを選択するため) とcontroller(選択したコントローラーを使用するため) です。

詳細については、ルーティング ガイドを参照してください。

于 2013-05-21T06:47:55.963 に答える
0

一般に、ネストされたルートを使用している場合は、ネストされたアウトレットが必要です。それ以外の場合、ブラウザーの [戻る] ボタンを使用して親ルートに戻ると、空のテンプレートが出力されます。ご承知おきいただければ幸いです。

以下のリンクで詳細を確認できます

  1. ブラウザーの [戻る] ボタンをクリックすると、ネストされたルートが同じテンプレート/アウトレットにレンダリングされる
  2. https://github.com/emberjs/ember.js/issues/1947#issuecomment-12975454
于 2013-05-21T12:53:06.987 に答える
0

私はこの答えが少し遅れていることを知っていますが、私はちょうど同じ問題を抱えていました. 問題は、ネストされたルートがネストされたアウトレットに依存していることです。ルートをアプリケーション アウトレットにレンダリングする場合は、次のようにすることができます。

this.resource('posts');
this.route('post', { path: '/posts/:post_id' });

このように、URL はネストされたままですが、すべてが正しく接続されます。さらに一歩進んで、ルートに接尾辞を追加することで別のテンプレート名を定義することもできます。例えば。

this.resource('posts.show', { path: '/posts/:post_id' });
于 2014-06-07T09:16:09.467 に答える