2013-08-25 1 views
0

특정 컨트롤러 /보기 쌍을 동시에 여러 번 표시하려고합니다. 문제는 경로가 새 컨트롤러를 만드는 대신 현재 컨트롤러에서 모델을 변경한다는 것입니다.모델을 변경하는 대신 새로운 컨트롤러 /보기 쌍을 인스턴스화하는 강제 경로

경로를 강제로 새 컨트롤러를 인스턴스화 할 수 있습니까? 나는 Ember.Route의 callbacks와 hooks를 망쳐 놓으려고 노력했지만, 이런 식으로 행동하게 만들 방법이 없다.

+0

템플릿의 모양은 어떻습니까? '{{#each}} '도우미 나'ArrayController'를위한'itemController' 옵션의 존재를 알고 있습니까? – intuitivepixel

+0

나는 프로토 타입을 먼저 시험해보고 있기 때문에 원하는대로 템플릿을 만들 수 있습니다. 나는 바이올린 (http://jsfiddle.net/6WV2U/1/)으로 시작했지만이 문제에 매달렸다. – Rengers

답변

1

여러 모델을 동시에 표시하려는 경우 단일 모델에 대한 경로 지점이 변경 사항이 사용자가하려는 작업과 잘 일치하지 않는 것처럼 보입니다. 라우터는 중첩 된 경로를 사용하지 않는 한 디스플레이에 추가보기를 추가하도록 설계되지 않았습니다. 귀하의 경로에서 renderTemplate hook을 무시하고 render()을 사용하여 어떤 컨트롤러가 사용되었는지 지정할 수 있지만 동시에 여러 컨트롤러 /보기 쌍을 표시하는 데 도움이되지는 않습니다.

대신 사용자 지정 컨트롤러를 지정하는 방법 중 하나를 사용하려고합니다. 표시 할 컬렉션이있는 경우 가장 간단한 방법은 템플릿에 #each helper을 사용하는 것입니다. 사용자 정의 뷰 클래스를 지정하려는 경우

{{#each product in products itemController='myControllerName'}} 

, 당신은 또한 할 수 있습니다. 당신이 모든 시간이 구성 요소를 만드는 것입니다 새로운 인스턴스를 가져옵니다 문맥을 얻기에, 다른 접근을하려고하는지에 따라

{{#each product in products itemController='myControllerName' itemViewClass='App.MyView'}} 

. 이것은 더 무거운 무게이지만 컨트롤러 로직을 컴포넌트로 옮겨 코드의 일부를 리팩토링해야 할 것입니다.

+0

감사합니다. 나는 라우터가 이것을 위해 설계되지 않았다고 의심했다. 각 구성 요소 또는 구성 요소를 사용하는 것이 바뀔 수 있습니다. 그러나 마지막으로 본 모델을 가리키는 URL을 원합니다. 기본적으로 내가 만들려고하는 것은 새로운 경로보기가 부분적으로 '슬라이드'된 이전보기 위에있는 인터페이스입니다. Spotify 웹 플레이어에서와 마찬가지로 http://i.stack.imgur.com/5FaWt.jpg는 http://i.stack.imgur.com/YDnU9.jpg로 움직입니다. 수동으로 URL을 업데이트해야한다고 생각하지만 라우터로 가능합니까? – Rengers

+1

나는 spotify를 사용하지 않으므로 확실히 말할 수는 없지만 위의'# each' +'itemController' 매개 변수를 사용하여 모든 아티스트를 표시하는 첫 번째 스크린 샷을 얻을 수있는 것처럼 보입니다. 그런 다음 확대 된 아티스트의 ID가있는 동적 세그먼트가 포함 된 중첩 경로를 추가하여 두 번째 스크린 샷을 얻으세요. 목록에서 아티스트를 클릭하면이 새 경로로 전환됩니다. 선택한 모델에서 관측자를 사용하여 UI 전환을 수행 할 수 있으며, 의미있는 경우 중첩 템플릿이있는'{{outlet}} '을 사용할 수 있습니다. –

+0

개요 페이지 + 아티스트 세부 정보 페이지에서 작동합니다. 하지만 '아티스트'페이지에서 다른 '아티스트'페이지를 클릭하면됩니다. 이것들은 서로 겹쳐 져서 배치됩니다. URL은 단지/: artist_id이며 중첩되지 않습니다. 문제는 내가 다른 아티스트로 전환하고 싶을 때, 그 위에 레이어 할 수있는 새로운 컨트롤러를 만들지 않고, 아티스트를 가장 많이 아티스트 컨트롤러로 변경하는 것입니다. 아마 나는 이것을 위해 라우터를 포기해야하지만 사용자는 여전히/: artist_id URL을 사용하는 페이지로 이동할 수 있어야합니다. 그런 다음에 만 레이어링을 표시하지 않습니다. – Rengers

관련 문제