2017-04-20 2 views
1

항상 발사를 유지하는 각도 1.6 필터가 있습니다.필터 매개 변수가 변경되지 않는 경우에도 각도 필터가 호출됩니다.

<div class="row" ng-repeat="(promptId, q) in (categoryDoubleFiltered = (categoryFiltered | 
    custom:searchText:selectAllCheckbox:answeredCheckbox))"> 

그래서 필터 여기 =>

searchText:selectAllCheckbox:answeredCheckbox 

에 전달되는 3 개 인수가 필터입니다 :

HTML처럼 보이는 우리의 HTML에서

app.filter('custom', function() { 

    return function (input, search, selectAllCheckbox, selectAnswered) { 

     console.log('filter is invoked!'); 
     // do our filtering thing 

     // return some subset of input 

    }; 

}); 

(promptId, q) 키/값의 경우 표준 ng-modelng-click을 사용합니다. 하지만 필터로의 입력 중 하나가 변경되지 않으면 왜 필터가 호출되어야하는지 알 수 없습니다. 필터는 <a> 태그 위로 마우스를 가져 가면 호출됩니다.

도대체 무엇입니까? 우리가 그렇게 부르는 것을 막기 위해 무엇을 할 수 있습니까?

답변

1

프리미티브를 사용하지 않는 한 필터는 $ digest 당 여러 번 실행됩니다. 이 상황에서는 무한한 다이제스트가 실행되고있는 것 같습니다. 당신은 당신이 논스톱 다이제스트을 실행 실제로 있는지 확인하려면이 옵션을 사용하여 확인할 수 있습니다

var digestCount = 0; 

$rootScope.$watch(function() { 
    digestCount++; 
    console.log(digestCount); 
}); 

을 나는 당신이 당신의 무한 다이제스트의 원인을 추적하고 제대로 작동 필터를 얻기 위해 그것을 해결하는 것이 좋습니다. 또한 plunkr 또는 바이올린은 우리가 진단하는 데 도움이 될 수 있습니다.

+0

감사합니다. 무한한 다이제스트는 아닙니다. 필터가 멈추지 만 HTML 요소 위로 마우스를 가져 가면 필터가 다시 실행됩니다. HTML 태그 위로 마우스를 가져 가면 필터가 작동하지 않게하고 싶습니다. –