1

http://emberjs.com/guides/routing/defining-your-routes/に従って、ember がこれをサポートしていないことは承知しています。「ルートをネストすることはできませんが、リソースをネストすることはできます」

しかし、私がやろうとしていることは理にかなっているように見えるので、どこかでこれに対するサポートがあると思います.

ここでの目標は、次のような構造にすることです。

this.resource('project', { path: '/project/:project_id' }, function(){

      this.route('manage', function(){
          this.route('settings');
          this.route('team');
          this.route('notifications');
          /* etc */
      });

 });

言い換えれば、「プロジェクト」インスタンスを参照する、管理できる項目のサブセクションを含む「管理」セクションが必要です。

私はこれを行うことができます:

this.resource('project', { path: '/project/:project_id' }, function(){

      this.route('manage.settings',{path : '/manage/settings'});
      this.route('manage.team',{path : '/manage/team'});
      /*etc*/

});

しかし、これが失敗する場所は次のとおりです。

  1. リソースのサブセクション間でナビゲーションを共有できません (つまり、サブルートによって設定されたアウトレットを持つ管理テンプレートを持っています)。
  2. 私のsettings.hbsは親リソースにアクセスしていません(これはルーター構成の「モデル」または「setupController」フック内で修正されていると確信しています。どちらが/どのようにかわかりません)

何か助けはありますか?

4

1 に答える 1

1

ネストされたリソースを使用しないのはなぜですか?

this.resource('project', { path: '/project/:project_id' }, function(){
  this.resource('manage', function(){
      this.route('settings');
      this.route('team');
      this.route('notifications');
      /* etc */
  });
});

これは、ember ガイドで説明されている投稿/コメント リソースとそれほど違いはありません: http://emberjs.com/guides/routing/defining-your-routes/#toc_nested-resources

管理できる項目のサブセクションを含む「管理」セクションが必要です。これらはすべて、私の「プロジェクト」インスタンスを参照しています。

Ok。したがって、ネストされたリソースアプローチを使用すると、manage.hbsテンプレートが作成されます。管理セクションまたはサブセクションのいずれかからプロジェクト インスタンスを参照するには、次のneedsように使用します。

App.ManageController = Ember.Controller.extend({
  needs: "project",
  projectBinding: "controllers.project"
});

詳細については、 http://emberjs.com/guides/controllers/dependencies-between-controllers/を参照してください。

于 2013-08-03T07:17:42.910 に答える