2013-09-03 5 views
0

짧은 컨텍스트 - 사용자에게 이벤트 목록을 표시하려면 ember 및 ember-data를 사용하고 있습니다. 이벤트는 API 엔드 포인트에서 집계되며 각 이벤트에는 이벤트 유형 (공지 사항 등)을 기록하는 "종류"의 속성이 있습니다. 이벤트는 사용자별로 API 수준에서 필터링됩니다 (따라서 사용자의 이벤트 목록을 가져 오기 위해 user_id를 쿼리해야합니다.)계산 된 속성을 사용하여 개체 목록을 필터링합니까?

이러한 모든 이벤트를 한 페이지에 표시해야하지만 종류별로 구분해야합니다.

model: function() { 
return this.store.find('events', {user_id: $.cookie('user_id')}); 
} 

을하고 다양한 이벤트 유형 필터가 될 수 있도록 : 종류의 고정 된 목록은, 그래서 우리는 단지

내 직감이 너무처럼 EventsRoute의 모델을 설정하는 것입니다 그들에게 전화와 B 수 EventsController :

announcements: function() { 
    return this.get('model').filterBy('kind', 'announcement'); 
}.property(), 

적어도 내 테스트 케이스에서는 작동합니다. 그래도 나는 물건에 대해 생각하는 것이 옳은 길인지는 모르겠다. 나는 속성 (컨트롤러에 설정되어있는 것 같음)과 모델 (경로가 설정 한 것)의 차이점을 그리워하지 않았습니다. 따라서 내 질문은 다음과 같습니다.

  1. 필터링 된 데이터 하위 목록을 만드는 것이 올바른 방법입니까? 기본 데이터를 가져 오는 .get ('model') 호출에 의존하지 않아야합니까?
  2. property() 호출의 이름이 실제로 무엇입니까? 이것들은 기본 모델이 변경 될 때 다시 계산되어야하지만, 말할 수있는 한, 속성() 호출 ({} .property ('potato'))에 쓰레기를 전달할 때 ember는 조용합니다. 따라서 .property ('model') 또는 .property ('@ each')가 여기에 적합한 지 여부는 알 수 없습니다.

답변

1

데이터 필터링 된 하위 목록을 만드는 것이 올바른 방법입니까? 기본 데이터를 가져 오는 .get ('model') 호출에 의존하지 않아야합니까?

예. 올바른 방법입니다. 이것은 ArrayController이므로 .get ('model') 또는 .get ('content')를 사용하여 배열에 액세스 할 수 있습니다.

실제로 property() 호출의 이름을 지정해야합니까?

예 속성을 다시 계산해야하는 종속성을 나열해야합니다. 확실한 엠버는 존재하지 않는다면 조용합니다. 이 경우 .property('[email protected]')

을 사용해야합니다.
관련 문제