2014-09-01 2 views
1

누군가 내 문제에 대해 밝힐 수있을 것으로 기대하고 있습니다. 여러 사용자를 표시하는 AgularJS 드롭 다운 목록이 있습니다. 어떤 사용자를 선택 하느냐에 따라 사용자의 ID로 참조되는 일부 데이터가 표시됩니다. 모든 것이 훌륭하게 작동합니다! 거기에 문제 없습니다.누적 합계 (ng-repeat)로 필터링 된 드롭 다운 (선택 사용)

저는 이러한 결과를 얻고 수학 연산을 수행하려고했습니다. 아래 예에서 사용자가 선택되면 요일과 '점수'가 표시됩니다. 각 행 끝에 점수를 축적하려고합니다.

뿐인 : http://jsfiddle.net/bfoyhycy/1

<tr ng-repeat="eachItem in Data |filter: { id: selectedOption.id }"> 
     <td>{{eachItem.day}}</td> 
     <td>{{eachItem.score}}</td> 
     <td> <!---- NO IDEA WHAT TO DO HERE ----> </td> 
    </tr> 

은 내가 데이터를 참조하고 그것의 인덱스를 사용할 수 있다고 생각하지만, 나는 'ID'를 기반으로 필터링하고 있습니다 때문에 작동하지 않습니다. 따라서 누적 합계는 첫 번째 사용자에게는 맞지만 나머지는 잘못됩니다 (사용자 "Frank"를 선택하면 볼 수 있습니다).

뿐인 : http://jsfiddle.net/bfoyhycy/2/

<tr ng-repeat="eachItem in Data |filter: { id: selectedOption.id }"> 
     <td>{{eachItem.day}}</td> 
     <td>{{eachItem.score}}</td> 
     <td>{{Data[$index-1].score}}</td> 
    </tr> 

내가 NG-반복하는 동안 이전 행 값을 얻을 수있는 방법이 있는지 알고 싶습니다? 처음에는 {{eachItem [$ index-1] .score}} 할 수 있다고 생각했지만 분명히 할 수는 없습니다. 누구든지이 문제에 대해 어떤 생각을 가지고 있다면 매우 감사하게 될 것입니다! 자세한 정보를 제공해야하는지 알려주세요. 다 잘될 것입니다!

감사합니다. T

답변

1

할 수 있습니다

<td>{{ filteredData[$index-1].score }}</td> 

진정한를 얻으려면 ... ...이 같은 filteredData라는 변수에

<tr ng-repeat="eachItem in filteredData = (Data |filter: { id: selectedOption.id })"> 

를 필터링 항목을 할당 이제 제대로 $index을 사용할 수 있습니다 누적 합계, 당신은 실제로 좀 더해야합니다.

<tr ng-repeat="eachItem in filteredData = (Data |filter: { id: selectedOption.id })" 
     ng-init="eachItem.runningTotal = filteredData[$index-1].runningTotal + eachItem.score"> 
     <td>{{eachItem.day}}</td> 
     <td>{{eachItem.score}}</td> 
     <td>{{eachItem.score + filteredData[$index-1].runningTotal}}</td> 
    </tr> 

Live Demo

아마도 더 나은 솔루션은을 만드는 것입니다 ... 내가이 시점에서 꽤 해키 점점 말을해야하지만, 그것을 할 수있는 한 가지 방법은, ngInit로하지만, 그것을 작동합니다 사전 계산 된 누적 합계가있는 필터링 된 배열을 출력하는 사용자 지정 필터.