경로

2013-08-02 2 views
1
내가 타다가 http://emberjs.com/guides/routing/defining-your-routes/에 따라,이 기능을 지원하지 않는다는 것을 알고 있어요

"를 중첩 할 수 없습니다 노선 있지만 중첩 할 수 자원"경로

그러나 합리적인 것 같다 내가 할 노력하고있어, 그래서 어딘가에 대한 지원이 있다고 가정하고 있습니다.

여기서의 목표는이 같은 구조를 가지고있다 : 나는 모두 참조, 사용자가 관리 할 수있는 것들에 대한 하위있는 "관리"섹션이하고 싶은, 즉

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"후크 내에서 고정되어 있다고 확신합니다./how)

어떤 도움이 필요합니까?

답변

1

왜 중첩 된 리소스를 사용하지 않습니까? 난 당신이 관리 할 수있는 것들에 대한 하위있는 "관리"섹션이하고 싶은 http://emberjs.com/guides/routing/defining-your-routes/#toc_nested-resources

:

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

이것은 엠버 가이드에 설명 된 게시물/댓글 자원에서 그렇게 다르지 않다 모두 내 "프로젝트"인스턴스를 참조합니다.

확인. 따라서 중첩 된 리소스 접근 방식을 사용하면 manage.hbs 템플릿을 갖게됩니다. 하위 섹션의 관리 섹션 또는에서 프로젝트 인스턴스를 참조하려면 바로이 같은 needs을 사용

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

더 자세히 위해 http://emberjs.com/guides/controllers/dependencies-between-controllers/를 참조하십시오.

+0

리소스를 사용하는 것이 맞다고 생각하지만 참조하는 동일한 페이지에서이 줄을 사용하지 마십시오. "참고 : 명사를 나타내는 URL에 this.resource를 사용해야하며 그 명사를 수정하는 형용사 또는 동사를 나타내는 URL에 대한 this.route. " 아마도 솔루션은 "관리"라는 경로를 사용하고 "설정"(명사) "팀"(명사) 등을 말합니다. 그래도이 작업을 수행하려면 각 모델 그 (나쁜 것은 아니지만),하지만 그 모델이 서버에서 어떻게 채워지고 부모 자원과 관련되는지 혼란스러워합니다. – gcoladarci

+0

나는 그것을 리소스 = - 일과 루트 = 뭔가 - 할 - 것 - 것 같은 생각. 어느 쪽이든 문제는 분명히 '물건'이 아닌 '관리'라는 단어 인 것 같습니다. managedProject (물건)에는 설정, 팀 및 알림이 있습니다. 그렇다면'App.ManagedProjectSettings' 등이 있습니다. FWIW 네가 너무 많이 읽고있는 것 같아. 경로와 리소스는 모두 모델과 연관 될 수 있습니다.그리고 당신이 선택한 것은 아무리해도 모델이 서버로부터 채워지는 방식과 서로 관련이 없습니다. –

+0

나는 이것에 대해 생각하는 올바른 방법이라고 생각한다. ManagedProject는 본질적으로 부모를위한 프록시 일 뿐이다. – gcoladarci