2013-11-14 3 views
4

에서 자원을 재사용 나는 다음과 같은 라우팅 설정을 가지고 :엠버 라우팅 : 여러 부모 경로

I도 예상했을 것이다 무엇
this.resource('blog',function(){ 
    this.resource('selectimage',{path:"selectimage/:returncontext"},function(){}); 
}); 

this.resource('post',{path:":post_id"},function(){ 
    this.resource('selectimage',{path:"selectimage/:returncontext"},function(){}); 
}); 

, blog.selectimage하고 탐색 할 때 post.selectimage, 동일한 라우터가, 컨트롤러 및 뷰가 사용됩니다. 불행히도 마지막 항목이 승리하는 것으로 보입니다.

부모 컨텍스트 (포스트/블로그) 을 selectimage을 탐색 할 때, (물론 내가베이스 selectimages - 클래스로부터 상속 수를 떠나지 않고,이 achievie 할 수 있지만, 나는 몇 가지 일반적인 엠버가 바라고 있어요 이 방법을 사용하십시오.

답변

5

Ember는 이름 지정 규칙에 더 의존하므로 서로 다른 두 경로에 대해 동일한 리소스 이름을 사용할 수 없습니다. 그러나 엠버가 동일한 컨트롤러를 재사용 할 수있는 방법을 제공하고, 사용자가 지정할 수

this.resource('post',{path:":post_id"},function(){ 
    this.resource('xxx',{path:"xxx/:returncontext"}); 
}); 

뭔가 다른 라우터에 포스트에서 당신의 selectimage의 이름을 변경 템플리트 templateName 및 재사용 할 수있다 controller. 이런 식으로 뭔가가

App.xxxRoute = Em.Route.extend({ 
    controllerName: 'selectimage', 
    templateName: 'selectimage' 
}); 

샘플 Demo

+0

니스는 재사용해야한다. 나는 당신이 Route에서 컨트롤러와 템플릿을 지정할 수 있다는 것을 몰랐다. – AyKarsi

+0

.. 그냥 문서를 확인했습니다 @ http://emberbs.com/api/classes/Ember.Route.html : controllerName 및 templateName 언급되지 않았습니다. 소스 코드의 render 메소드를 살펴보면 viewName을 지정할 수도 있음을 알았습니다. – AyKarsi

+0

행복하게 도와주었습니다 :) 엠버 독스가 점점 좋아지고 있습니다. 그것을 가능한 한 빨리 믿어 라. – selvagsz