Angular JS 필터가 같지 않음


83

아주 기본적인 질문처럼 보이지만 올바른 구문을 얻을 수 없습니다 ..

<li class="list-group-item" ng-repeat="question in newSection.Questions | filter:Id != '-1'; " ng-mouseenter="hover = true" ng-mouseleave="hover = false">
    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

내가 원하는 것은 id가 -1이 아닌 모든 질문을 보여주는 것입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까. 감사!


question.id! = -1을 확인하는 사용자 지정 필터를 작성해야합니다. 또한 내가 생각하는 당신의 오류 ID가 문제의 속성이라는 것이다
SoluableNonagon

@EliteOctagon 당신은 그것을 할 수 있습니다-아래 내 대답을 참조하십시오.
마이클 로즈

문서를 보시겠습니까? docs.angularjs.org/api/ng/filter/filterexpression 설명 된 부분 ( 사용법 -> 인수의 두 번째 p ) filter: {Id: "!-1"}또는 그와 같은 일 부팅이 트릭을 수행합니다
Nebulosar

답변:


165

구문이 약간 벗어났습니다.

<li class="list-group-item"
    ng-repeat="question in newSection.Questions | filter:{ Id: '!-1'}"
    ng-mouseenter="hover = true" ng-mouseleave="hover = false">

    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

약간의 JSFiddle 참조 : http://jsfiddle.net/U3pVM/3845/

편집하다:

변수가있는 예 :

<script> var invalidId = '-1'; </script>
<li class="list-group-item"
    ng-repeat="question in newSection.Questions | filter:{ Id: '!' + invalidId}"
    ng-mouseenter="hover = true" ng-mouseleave="hover = false">

    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

이것은 어떻게 든 변수에 대해서도 작동 할 수 있습니까? 이 바이올린을 약간 수정 하면 상수 대신 변수에 "같지 않음"수량이 배치되며 더 이상 작동하지 않습니다.
Domi

그럼 당신은 아마 작가에 자신의 필터 기능을 필요로 현실을 부르 자 checkForX다음과 같이 사용할 ... | filter:checkForX일치가있는 경우 true 또는 false를 반환 ...
마이클 로즈

@Domi, 귀하의 질문에 대한 답변을 더 일반적인 답변으로 게시했습니다. 당신은 시간이있을 때 그것을 확인
페르난도 Carvalhosa

1
@Tielman, 추가 변수를 선언 할 필요가 없습니다. 잘 작동합니다. "filter : {id : '!' + notValid} "
Stalinko 2015-06-24

11
이것은 또한 어떤 걸러 Id포함하는 -1같은 문자열로 -11또는 2-1. Id가 아닌지 확실하게 확인하려면 -1작은 비교기 함수를 작성하고이를 필터로 사용해야합니다.
andypea 2015

20

@Michael Rose 답변이이 경우에 효과가 있지만 일부 객체 / 변수와 같지 않은 필터링을 시도하면 그렇게 될 것이라고 생각하지 않습니다.

이 경우 다음을 사용할 수 있습니다.

JS :

filterId = -1

HTML :

<li ng-repeat="question in newSection.Questions | filter: !{ Id: filterId}">
</li>

더 많은 중첩 케이스 :

JS :

someQuestion = {
   someObject: {
     Id: 1
   }
}
newSection.Questions = [someQuestion]

HTML

<li ng-repeat="question in newSection.Questions | filter: !{someObject : {Id: -1} }">
</li>

1
이 구문은 나를 위해 작동하지 않습니다 :! {Id : -1} 그러나 대체 대답은 훌륭하게 작동합니다 : {Id : '!-1'}. 아마도 버전 차이일까요?
python1981

그럴 수 있습니다. 어떤 버전을 사용하고 있습니까?
Fernando Carvalhosa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.