2016-08-21 3 views
2

범위 안의 배열에 특정 값이있는 경우 ngIf을 트리거하고 싶습니다.AngularJS - ng - 배열에 특정 값이있는 경우

그래서 내가 내 범위에서이 있습니다

내가 예를 들어, 하나 개의 요소 경우를 보여주는 ngIf을하고 싶은, 노란색은 주어진 색상의 배열 중 하나 (에 존재

var orders = [{ 
    "order_no": 1, 
    "color": ["blue", "pink", "red"] 
}, { 
    "order_no": 2, 
    "color": ["yellow", "blue", "white"] 
}]; 
것을 나는 않을 것 미리 데이터 범위를 알고 있지만 미리 구조를 알고 있어야합니다.)

유일한 내가 미리 범위의 구조를 알고있는 경우 것이 그렇게 발견 방법, 그래서 FX ng-if="orders[1].color[0] === 'yellow'"

감사합니다!

답변

7

HTML 템플릿 내에 color 배열의 indexOf 메서드를 호출 할 수 있습니다. 이렇게하면 추가 방법으로 $scope을 오염시킬 필요가 없습니다.가 expressions in AngularJS are different 잊지 마세요 : ng-if="order.color.indexOf('pink') !== -1"

참고 :

는 방법은 다음과 같습니다. 기억해야 할 중요한 요소 중 하나는 그들이 용서하는 것입니다.

을 용서 : 자바 스크립트에서 정의되지 않은 특성을 평가하기 위해 노력하는 것은 ReferenceError가 또는 형식 오류를 생성합니다. Angular에서 표현식 평가는 undefined 및 null을 허용합니다.

이것은 myCtrl.foo.bar.wa.la 같은 것이 ngIf 트리거되지 않습니다 undefined로 평가된다는 것을 의미합니다. 자세한 내용은 here을 참조하십시오.

+0

답이 더 자세하고 정확한 것으로 표시하고 html로 표시하는 것이 더 직접적인 것 같습니다. 감사! – Joe82

1

당신은 orders의 크기와 얼마나 자주, 단지 orders가 변경하는 hasYellow 재산 및 업데이트가 더 효율적일 수 있습니다 변경에 따라 함수 표현식

ng-if="hasYellow()" 

$scope.hasYellow =() => $scope.orders.some(
    order => order.color.indexOf("yellow") > -1 
); 

으로이 작업을 수행 할 수 있습니다.

관련 문제