2014-01-20 4 views
0

내 앱에서 사용자가 약속 시간을 3 번 요청할 수 있도록 재사용 가능한 UI 구성 요소를 만들고 있습니다. 이것은 재사용 가능한 UI 구성 요소이기 때문에 이것은 내 이해에서 볼 수 있습니다.Ember 컨트롤러 대 뷰

일이 까다로워지는 곳은 구현에 있습니다. 이를 위해 몇 가지 모델 (한 번에 여러 번 약속)을 ​​사용할 것입니다. 시간을 늘리고 약속을 서버에 저장하면 모델 관리는 일반적으로 컨트롤러 작업이 아닌보기가됩니다.

그래서 무엇이 옳은가요?

보기의 초기화 중에 컨트롤러를 만들고 모든 모델 조작을 수행하고 싶습니까? 아니면 뷰에서 모델을 생성하고 거기에서 조작하고 저장하는 것이 괜찮습니까?

는 궁극적으로 내가 템플릿의보기 만 포함 할, 그리고 다른 모든 것이 작동합니다 :

{{#view App.ScheduleAppointment}} 

답변

1

재사용 가능한 UI 구성 요소가 Components해야한다. THIS은 또 다른 멋진 리소스입니다.

당신이 옳다고 생각합니다. 관리 모델은 컨트롤러의 일입니다. 보기 또는 구성 요소가 아닌 것은 UI의 조각 일뿐입니다. 구성 요소의 경우 컨텍스트 전체에서 재사용 가능 here

this.sendAction('action', param1, param2); 

내가 템플릿에서, 다음과 같이 보일 것입니다 :

{{my-component value1=value1 .... action="actionFromComponent" }} 

그리고 컨트롤러 :

난 당신이 컨트롤러에 작업을 전송해야한다고 생각 모델을 처리하려면

App.MyController = Ember.Controller.extend({ 
    actions: { 
     actionFromComponent: function(param1, param2) { 
      ..... 
     } 
    } 
}) 

이 정보가 도움이 되었기를 바랍니다.

+0

좋은 지적. 이것은 모델 저장이 페이지의 컨트롤러에서 수행된다고 가정하는 것 같습니다. 이 구성 요소는 다양한 페이지/컨트롤러에 포함됩니다. 나는 컨트롤러가 컨트롤러와 직접적으로 관련이 없기 때문에 컨트롤러가 그것에 대해 알 필요가 없다는 것을 선호한다. 어떻게 든 구성 요소를로드 할 컨트롤러를 만들면 모든 구성 요소가 포함될 수 있습니까? (내가 이것을 시도하고 추한보고 시작) –

+0

@ JeremyGillick 네, 당신은 귀하의 구성 요소에 대한 명시적인 컨트롤러를 선언하고 여기에 문서화 된대로'needs' 배열을 사용하여 다른 컨트롤러에 종속성으로 끌어 올 수 있습니다 : http : // emberjs .com/guides/controllers/dependencies-between-controllers/ – herom

+1

구성 요소는 자체 컨트롤러입니다. @herom이 지적한대로'needs' 속성을 사용해 보았지만 작동하지 않아야한다고 생각합니다. 구성 요소는 사용 된 컨텍스트에서 격리되므로 여러 컨텍스트에서 사용할 수 있습니다 (인터페이스를 수행하는 경우). 당신이 원한다면 구성 요소에 저장 논리를 넣거나 그것을 사용하는 컨트롤러에 적용 할 mixin에 넣을 수 있습니다 (나는 더 좋음). – edpaez