2014-12-18 1 views
2

filterBy 함수를 사용하여 둘 이상의 값을 사용하여 목록을 필터링하려면 어떻게해야합니까?Ember filterBy - 필터링 할 값을 두 개 이상 사용

시나리오는 다음과 같습니다. - console_id를 기준으로 필터링 할 콘솔 목록이 있습니다.

각 콘솔마다 다른 ID가 있으므로 JSON을 제어 할 수 없습니다. 중첩 된 assignedConsole JSON 내에서 콘솔 ID를 반복하고 루트 assignedConsole JSON을 통해 필터링하고 싶습니다.

나는 첫 번째 개체의 콘솔 ID를 얻을 필터에 배치하지만 난 두 값

을 사용하는 방법을 모른다 할 수 내 문제를 보여주기 위해 emberjs 빈을 만든

: http://emberjs.jsbin.com/kojute/2/

답변

1

이전 답변에서 몇 가지 설명을 듣고 나면 assignedConsole 값을 필터링하는 대신 콘솔을 기준으로 필터링하려고한다는 것을 깨달았습니다. 내 제안 컨트롤러에 selectedConsole 속성을 추가하고 선택한 콘솔 assignedConsoles 배열을 표시하는 것입니다.

작업 JSBin : 당신은 당신의 대답과 함께 jsbin을 편집 할 수 있다면 http://jsbin.com/nuroyuvuta/9

0

편집 : 작업 솔루션에 대한 다른 답변을 참조하십시오!

는 내가 당신을 위해 중첩 된 구조를 평평하게 모델이나 컨트롤러에 계산 된 속성을 만들 제안

:

allConsoles: function() { 
    return this.get('consoles') 
    .mapProperty('assignedConsoles').reduce(function(a, b) { 
     return a.concat(b); 
    }) 
    .uniq(); 
}.property('[email protected]') 

이 먼저 consoles 속성에서 모든 항목을 얻을 것이다는, 다음의 모든지도를 자신의 assignedConsoles을 중간 값으로 설정 한 다음 assignedConsoles을 모두 합하여 값을 줄입니다. 마지막 uniq() 호출은 배열에서 발견 된 중복을 제거합니다.

+0

, 그 큰 도움이 될 것입니다. – Jetchy

+0

데이터 소스에 대해 100 % 확실하지는 않지만'콘솔. @ 각. 할당 된 대화 상자 '의 집합 인'콘솔. 그렇다면 루트 'assignedConsoles' 배열을 필터링해야하는지 확신 할 수 없습니다. – mpowered

+0

http://jsbin.com/nuroyuvuta/9 무엇을 찾고 계십니까? 그렇다면 대답을 업데이트 할 수 있습니다. – mpowered

관련 문제