0

/「投稿」など、別のルートをロードするルートを作成したいと思います。Ember を構成するのは 2 つのソリューションのみのようですIndexRoute

App.IndexRoute = Ember.Route.extend({
  redirect: function() {
    return this.transitionTo('posts');
  }
});

また

「投稿」リソースを/パスにマップします。

App.Router.map(function() {
  return this.resource('posts', { path: '/' });
});

/posts最初の解決策は、実際のベース パスが ではなく、常に に訪問者を送信するため、合理的ではないように思われ/ます。2 番目の解決策は、 からの投稿の表示のみを許可し、 からの投稿は許可しないため、妥当とは思えませ//posts/new2 番目の解決策は、本質的に、新しい投稿ではなく、新しい投稿のような奇妙なネストされた URL を作成します/posts/new

/通常の URL からターゲット リソースを利用できるようにしながら、リダイレクトの代わりに別のルートを読み込むように構成する最も慣用的な方法は何ですか? 言い換えれば、/投稿にアクセスするためのパスが欲しいのですが、 経由で投稿を利用できます/posts

4

2 に答える 2

2

もう 1 つの方法はIndexController needs、を用意し、テンプレートで を使用して投稿をレンダリングすることですPostsControllerrenderindex

App.IndexController = Ember.Controller.extend({
  needs : ["posts"]
});

そして、あなたのindexテンプレートは

{{render 'posts'}}
于 2013-09-22T18:29:31.900 に答える
1

あなたがやりたいことは次のとおりだと思います:

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return this.get('store').findAll('post');
  },
  setupController: function(controller, model) {
    this.controllerFor('posts').set('content', model);
  }
});

そうすれば、このルートのコントローラーはArrayControllerすべての投稿で満たされます。/postsまた、お好きな方法でルートを使用することもできます。デフォルトでは、これはApp.IndexController(カスタム機能を実装するためにオーバーライドできます) です。

あるいは、別のコントローラー (たとえば ) を使用したい場合は、routesフックApp.PostsControllerでそれを指定できます。renderTemplateしたがって、postsテンプレートをApp.PostsController使用してApp.IndexRouteで使用したい場合は、以下を含めます。

renderTemplate: function() {
   this.render('posts', { controller: 'posts' });
}

詳細については、Ember.js ガイドのルーティング セクションをご覧ください。

于 2013-09-22T05:53:11.300 に答える