2017-12-28 25 views
0

Ember 2.17.0을 사용하면 다른 동적 경로에서 중첩 된 경로를 올바르게로드 할 수없는 것으로 보입니다.EmberJS 중첩 동적 경로가 예상대로 리디렉션되지 않음

다음 파일 구조를 사용하여 stacks 경로에 새 페이지를로드하고 싶습니다. 123456 스택 모델의 ID 인 경우

/instances/view/91467053-ba03-33b9-8950-83f0e64b4688/stacks/123456처럼

features/instances/ 
├── edit 
│   ├── route.js 
│   └── template.hbs 
├── index 
│   ├── route.js 
│   └── template.hbs 
├── new 
│   ├── route.js 
│   └── template.hbs 
└── view 
    ├── route.js 
    ├── stacks 
    │   ├── route.js 
    │   └── template.hbs 
    └── template.hbs 

stacks 엔드 포인트의 URL 보인다. 그러나 순간에 페이지 위의 링크를 실행하면 다시로드되지 않고 여전히 view 경로에 있습니다. view 템플릿에 {{outlet}} 태그를 삽입하면 stacks의 콘텐츠가 렌더링됩니다. 하지만 그것은 내가 잘못 여기에 무슨 짓을

내 router.js

Router.map(function() { 
    this.route('instances', function() { 

    this.route('view', {path: '/view/:instance_id'}, function() { 
     this.route('stacks', {path: '/stacks/:stack_id'}); 
    }); 

    this.route('edit'); 
    this.route('new'); 
    this.route('all'); 

    }); 
    this.route('error'); 
}); 

... 그것의 자신의 페이지에서 원하는? 에버 2.0+에 대해 중첩 된 동적 경로를 많이 찾을 수 없습니다.

답변

0

문제를 올바르게 이해하고 싶습니다.

1) 대신 view/template.hbsview/index/template.hbs에서 HTML하는 view 템플릿 코드를 전혀 공유하지 않습니다 그런 식으로 view/stacks/template.hbs을 넣어 :이 작업을 수행하는 방법은 두 가지가 있습니다.

2) 대신에 당신이 path: '/view/:instance_id/stacks/:stack_id'instances 경로까지 끌어 view 경로에서 stacks 경로를 중첩 한 다음 경로/템플릿 파일을 이동의 따라 엠버의

+0

답장을 보내 주셔서 감사합니다. RE 옵션 1, 내가 제안한 것을 수행하면보기 경로 위에있는 색인 폴더가 이미 이상해집니다. 그래서 백엔드에 대한 요청은'/ instances/view/e3f61b5a-89e3-3d1c-a3ce-e0df22817a9b'가 아닌'/ instances/e3f61b5a-89e3-3d1c-a3ce-e0df22817a9b'가됩니다. –

+0

그리고 옵션 2 다음에는 콘솔 오류가 없습니다. 그러나 페이지는 그냥 비어 있습니다. template.hbs가 완전히 무시되고있는 것과 같습니다. –

+0

백엔드 요청 URL은 프론트 엔드 경로 구조와 관련이 없어야합니다. 그러나 모든 모델 훅을 명시 적으로 구현해야 할 수도 있습니다. – TBieniek

0

중첩 된 경로는 작동하지 않습니다 ' 다시 익숙해 져.

대부분의 다른보기 프레임 워크에서 중첩 된 경로는 개체 간의 관계를 암시하며 중첩 된 경로는 중첩 된 뷰를 의미합니다.

예를 들어 메시지 목록을 표시하고 그 옆에있는 세부 정보 창에서 열 수있는 기능을 원한다면 messages.show 경로를 중첩하는 messages.index 경로를 가질 수 있습니다.

무언가를 독립적으로 렌더링하려면 (다른보기에 중첩되지 않도록) 단순히 자체 경로를 지정하십시오.