0

난과 같이 정의 (매우 간단) 컨트롤러가 말하는 컨트롤러에 정의 함수를 필터링하기 :통과 매개 변수

app.controller('myController', ['$scope', function(scope){ 
    list=[1,2,3,4,5] 
    scope.filterFunction = function(item, upperBound){ 
     if(item < upperBound){ 
     return(item); 
     } 
    } 
}]); 

가 어떻게 템플릿을 통해 UPPERBOUND에 대한 값을 전달할 수 ? 난 당신이 전용 필터 롤, 당신은 filterName:arg1:arg2....

으로 매개 변수화 할 수 있다는 것을 알고

<div ng-repeat="item in list | filter:filterFunction">{{item}}</div> 

이 방법과 비슷한 동작을 얻을 수있는 방법이 있습니까? 또는 컨트롤러 기능에 스코프에 대한 액세스 권한을 부여 할 수있는 방법이 있습니까?

답변

0

전용 필터를 만들지 않으면 범위에서 필터링 된 항목을 반환하는 함수를 만들 수 있습니다. 예컨대 : 다음

app.controller('myController', ['$scope', function(scope) { 
    scope.list = [1,2,3,4,5]; 
    scope.upperBound = 3; 

    scope.filterFunction = function(list, upperBound) { 
     var rval = []; 
     for(var i = 0, l = list.length; i < l; i++) 
     { 
      if(list[i] < upperBound) 
      { 
       rval.push(list[i]) 
      } 
     } 
     return rval; 
    }; 

    // or 
    scope.filteredList = function() { 
     var rval = []; 
     for(var i = 0, l = scope.list.length; i < l; i++) 
     { 
      if(scope.list[i] < scope.upperBound) 
      { 
       rval.push(scope.list[i]) 
      } 
     } 
     return rval; 
    }; 

}]); 

그 기능에 바인딩 :

<ul> 
    <li ng-repeat="item in filterFunction(list,upperBound)"> 
    {{item}} 
    </li> 
</ul> 

또는

<ul> 
    <li ng-repeat="item in filteredList()"> 
    {{item}} 
    </li> 
</ul> 

Plunker