2014-12-28 3 views
0

개체 컬렉션을 표시하는 ng 반복 목록이 있습니다. 오늘 삽입 된 개체 만 목록에 표시하도록 필터를 구현했습니다. 모양은 다음과 같습니다.AngularJS의 다중 조건 필터

<div class="row msf-row" 
    ng-repeat="record in recordlist | filter: record.date = dateJson"> 

환상적입니다. 내 문제는 오늘 기록한 물건과 재산 도착이없는 기록을 모두 보여주고 싶다는 것입니다. (어제 소개 받았을 수도 있지만 도착한 것으로 표시해야합니다).

나는 이것을 시험해 보았지만 오늘까지 00:00에 그것이 정확한지 알 수 없다.

<div class="row msf-row" 
    ng-repeat="record in recordlist | 
       filter: record.date = dateJson || 
         record.date != dateJson && !record.arrival"> 

의미가 있습니까?

답변

1

마크 업의 표현식이 너무 복잡해지면 리팩터링 할 시간입니다. 당신은 당신이 원하는 검사를 수행 컨트롤러에서 함수를 정의해야합니다 :

$scope.shouldShow = function(record) { 
    return record.date == dateJson || 
      (recode.date != dateJson && !record.arrival); 
} 

(참고 :이 조건은 중복, 당신은 그것에을 단축 할 수 있습니다) :

return record.date == dateJson || !record.arrival; 

그런 다음에 그것을 사용 귀하의 필터 :

<div class="row msf-row" ng-repeat="record in recordlist | filter:shouldShow"> 

이렇게하면보기를 편집하지 않고도 논리를 업데이트 할 수 있습니다.

+0

나는 제대로 작동하지 않습니다. 조건은 오늘 날짜 (dateJson) 또는 record.arrival (record.arrival = '')이없는 레코드 만 표시해야합니다. 내가 뭘 놓치고 있니? –

+0

그것이 작동하지 않는다고 말할 때 당신은 무엇을 의미합니까? 무슨 결과를 얻었습니까? BTW,'=''(또는 아마도'==')를 사용해야하는 곳에서는'='를 사용하는 것 같습니다. 그 차이를 알지, 그렇지? – JLRishe

+0

모든 것을 필터링하고 있습니다 (결과 없음). 어쩌면 문제는 그 record.arrival 존재하지만 비어 있습니다? –

0

사용자 지정 필터를 만들려는 경우이 방법을 사용할 수 있습니다. 이 코드를 테스트하지 않은 : 여기가

<div class="row msf-row" ng-repeat="record in recordlist | customFilter:dateJson"> 

app.filter('customFilter', function(){ 
    return function(records, dateJson){ 
     return records.filter(function(item, index, array){ 
      return item.date == dateJson || (item.date != dateJson && !item.arrival); 
     }); 
    } 
}) 

책임의 한계와 법적 고지 (이미 전에 모듈을 인스턴스화 한 넣다 후)
app = angular.module('yourModuleName', []) 또는 app = angular.module('yourModuleName') 있다고 가정합니다.