2012-12-06 3 views
3

그래서 나는 엠버에서 (무한대로) 무제한의보기를 지원할 수 있어야합니다.Ember.js보기 (무제한)

기본적으로 설문 조사 앱을 만들고 있습니다. 설문 조사에는 정의되지 않은 수의 단계가있을 수 있으므로 정의되지 않은 수의보기/컨트롤러가 있습니다. 단계 수는 콘텐츠와 핸들 바 템플릿 (한 단계에 가능한 한정된 수의 콘텐츠 유형이 있음)과 함께 서버에서 가져온 것이므로 다른 설문 조사를 위해 설문 조사를 연장 할 수있는 방법이 필요합니다. . 그래서 기본적으로 하나의 엠버 애플 리케이션이 모든 것을 처리합니다. 나는 엠버 단계에서 중요하지 않은만큼 콘텐츠 유형을 렌더링하기 위해 코드를 추상화했습니다. 이제는 무제한의 단계를 지원해야합니다.

엠버보기 및 컨트롤러를 사용할 수 있습니까? 대신 이름으로 참조하는 대신 배열 인덱스로 참조 할 수 있습니까? 일반적으로 App.TestView = ..., router.get ('applicationController') .connectOutlet ('test')와 같이 App.AllView [0] = Ember.View.extend();를 사용할 수 있습니다. 및 router.get ('applicationController'). connectOutlet ('test') [0] 또는 뭔가? 그렇다면 처음에는 for 루프를 사용할 수 있습니다. 검색 유형은 컨텐트 유형과 단계 수를 포함하는 조사 데이터를 가져 와서 뷰 배열에 연결하고 멀리 있습니다.

다른 방법이있을 수 있습니다. , 그래서 어떤 해결책도 좋을 것입니다. 새 엠버 앱을 만드는 것은 옵션이 아닙니다. 동일한 앱은 설문 개체로 전달되는 모든 것을 처리해야합니다.

+0

조회 수가 n 인 경우 각보기에 대해 n 개의 URL을 하나씩 보유해야합니까? –

+0

그래, 그래도 @gbabiars가 대답을 처리했다. –

답변

5

다른 단계가 포함 된 뷰 클래스 배열을 만들 수 있습니다. 핸들 막대 템플릿 이름을 사용하여 배열에 새 뷰를 추가 할 수 있습니다.

경로는 경로에서 걸릴 수 있으며 해당 경로를 사용하여 connectOutlet에 사용할 적절한보기 클래스와 컨트롤러를 찾습니다.

step: Em.Route.extend({ 
    route: '/:step', 
    connectOutlets: function(router, context) { 
     router.get('applicationController').connectOutlet({ 
      viewClass: App.surveyViews[context.step], 
      controller: App.surveyControllers[context.step].create(), 
      context: {} 
     }); 
    } 
}) 

컨텍스트에 필요한 추가 로직을 추가 할 수 있지만 기본 아이디어입니다.

+0

와우는 완벽 해 보인다. 나는 어제 밤에 그 일에 대해 약간의 작업을했지만, 한 가지 옵션은 윈도우 [controller_name_var]를 사용하는 것이 었습니다. 그러나 이것은 좀 더 나은 해결책입니다. 나는 또한 라우터를 구현하는 방법을 몰랐다. 그래서 환상적이다! 건배 –