2014-10-07 2 views
2

엠버 응용 프로그램이있는 사람의 약속을 나열하고 싶습니다. 상단에있는 사람의 이름을 표시 한 다음 {{콘센트}}Ember에서 서브 루틴의 routeparameter를 얻는 방법

  • 약속 : 템플릿 - 나는 2 템플릿

    1. 사람이 지금

      this.resource('person', { path: "person/:personid/" }, function() { 
          this.route('appointments', { path: "appointments/:date" }); 
      }); 
      

      : 내 경로는 다음과 같이 정의했다 - 템플릿 : 날짜를 탐색하기 위해 뒤로, 날짜 및 앞으로 버튼이 있으며 나열된 약속도 있습니다.

    약속의 제어기는

    이것도 버튼 rerenders
    controller.transitionToRoute("person.appointments",mydatevar) 
    

    하여 날짜를 통해 탐색을 처리 때문에 동일한 경로이다. 그리고 나는 그것을 좋아하지 않는다.

    다른 접근 방식을 시도했지만 항상 약속 목록에서 탐색을 분리하면 두 컨트롤러 또는 경로의 날짜를 어떻게 든 처리해야합니다.

    네비게이션은 약속 경로의 "서브 루트"매개 변수의 상태를 알아야합니다. 그리고 나는 이것이 완전히 틀렸다고 생각합니다.

    내가 지금

    :-( 이

    아무도

    1. needs: http://emberjs.com/guides/controllers/dependencies-between-controllers/ 
    2. send: http://emberjs.com/api/classes/Ember.Route.html#method_send 
    

    당신은 약속 컨트롤러에 날짜를 설정할 수 있습니다. 방법은 두 가지가 있습니다?

  • 답변

    0

    을 나를 도울 수에 needs를 사용하여 혼란 person 컨트롤러에 데이터를 다시 공유하려면 해당 사람 컨트롤러의 약속 날짜가있는 별칭을 사용하십시오.

    App.PersonController = Em.ObjectController.extend({ 
        needs: 'appointments', 
        date: Ember.computed.alias('controllers.appointments.date') // whatever the date property is 
    }); 
    

    날짜가 변경되었음을 알리는 작업을 상위 경로에 보낼 수 있습니다.

    App.PersonRoute = Em.Route.extend({ 
        actions: { 
        dateChanged: function(newDate){ 
         this.controller.set('date', newDate); 
        } 
        } 
    }); 
    
    App.AppointmentsRoute = Em.Route.extend({ 
        model: function(params){ 
        this.send('dateChanged', params.date); 
        ... 
        } 
    }); 
    
    +0

    이 (둘 다) 절대적으로 의미가 있습니다! Thx, 나는 현재 사무실에서, 나는 그것을 내일 검사 할 것이다! – Weissvonnix

    관련 문제