2014-01-22 2 views
0

이상한 질문 (미안, 새 기능)으로 들릴 수도 있지만 ng-repeat 기능이 필요하지만 단일 항목 만 바인딩하면됩니다. 나는 현재 리피터를 사용하지만 아래이 같은 하나 개의 항목으로 배열을 필터링 ...단일 개체에 대한 ng-repeat 기능

<div ng-repeat="item in uploader.queue | filter: {fieldName:'design'}"> 
    <div ng-thumb="{ file: item.file, height: 100 }"></div> 
</div> 

이 코드는 완벽하게 작동하지만, 나는 '나는 여기에 중계기를 사용하지 않아야 생각을 떨칠 수 없습니다입니다 하나의 항목 만 바인딩합니다.

답변

0

Is there a chance your filter will ever cause more than one item to be valid?

어떤 경우 하고있는 일은 절대적으로 옳다.

아니요, 그렇다면 수집 한 내용이 여전히 잘못되어있는 것은 아닙니다.

Will the filtered item will ever be different? In what circumstances does it change?

가 변경되지 않을 경우, 당신이 정말로 컨트롤러의 데이터를 필터링하고 단순히보기에 사용할 수 $scope.filteredItem 같은 것을 가지고 있어야한다.

+0

중복을 제거하기 때문에 필터에는 하나의 일치 항목 만 존재합니다. 업 로더는 다른 누군가가 만든 지시어로, 특정 "fieldName"이있는 항목에만 관심이 있지만 항목이 많기 때문에 배열을 사용해야합니다. 컨트롤러에서 필터링하는 것이 무엇을 의미하는지 이해할 수 있습니다. 그래서 나는 그것을 해결할 수 있는지 알게 될 것입니다. 감사. – jonhobbs

1

는 다음과 같은 일을 할 수 있습니다

{{(uploader.queue | filter:{fieldName: 'design'})[0].file}} 

필터 배열을 반환합니다. 그래서 우리는 반환 된 배열을 가져 와서 첫 번째 항목에서 파일 속성을 가져옵니다 (첫 번째 항목 만 필요하기 때문에).

바인딩 파일은 그때 생각으로 당신이 할 수있는 한 방법 ("@") 인 경우 : 예, 당신은

<div ng-thumb="{file: {{(uploader.queue | filter:{fieldName:'design')[0].file}}, height: 100}"></ng-thumb> 

demo fiddle

+0

그런 다음 ng-thumb 속성에서 할 수 있습니까? – jonhobbs

+0

예를 들어 업데이트되었습니다. 이중 곱슬이 필요한지 아닌지는 ng-thumb이 해당 속성에 바인딩하는 방법에 따라 다릅니다. – KayakDave

+0

질문에 포함 된 원래 솔루션과 달리 대기열에 이러한 요소가 없으면 정상적으로 실패하지 않습니다. – jelinson