2014-11-22 1 views
0

특정 입력이 완료되면 행을 강조 표시하고 경고 기호를 표시하려는 테이블이 있습니다. 나는 이것에 대한 지시를했다.각도 지시문을 사용하여 클래스 추가 및 요소 표시/추가

<tr ng-repeat="size in resource.sizes" check-diameter size="size"> 
<td><i class="fa fa-warning"></i>{{size.title}}</td> 
<td>{{size.inner}}</td> 
<td>{{size.outer}}</td> 
</tr> 

.directive('checkDiameter', function() { 
    return { 
     restrict: 'A', 
     scope: { 
     size: '=' 
     }, 
     link: function(scope, element, attrs){ 
     scope.$watch('size', function(){ 
      if(scope.size.inner > scope.size.outer){ 
      element.addClass('warning'); 
      } 
     }, true); 

     } 
    }; 

이제는 행을 강조 표시합니다. 그러나 경고 기호 <i class="fa fa-warning"></i>을 표시/추가하라는 지침을 어떻게 작성합니까?

일반적으로 ng-hide를 사용 하겠지만 몇 가지보기에 컨트롤러를 사용하고 있으므로 모듈 식으로 유지하려면 지시문에 모든 것을 넣어야합니다.

+0

내가 NG-클래스와 NG 숨기기 뭐가 잘못 됐는지 이해가 안 돼요? – Wawy

+0

@Wawy 컨트롤러 대신 내 지시문을 ng-hide로 지정할 수 있습니까? 동일한 컨트롤러에 대해 두 가지 뷰가 있습니다. 그들 중 하나에서 '크기'하위 문서가 존재하지 않습니다. 따라서 컨트롤러에서 로직을 실행하면 sizez가 정의되지 않은 오류가 발생합니다. – Per

답변

0

원하는 요소에 클래스를 추가하려면 ng-class를 사용해야합니다. 동일한 조건에 따라 요소를 숨기려면 css를 사용해야합니다.

HTML :

<tr ng-repeat="size in resource.sizes" ng-class="{warning: size.inner > size.outer}"> 
<td><i class="fa fa-warning warning-message"></i>{{size.title}}</td> 
<td>{{size.inner}}</td> 
<td>{{size.outer}}</td> 
</tr> 

JS : 당신의 CSS에서

.directive('checkDiameter', function() { 
    return { 
     restrict: 'A', 
     scope: { 
     size: '=' 
     }, 
     link: function(scope, element, attrs){ 
     scope.$watch('size', function(){ 
      if(scope.size.inner > scope.size.outer){ 
      element.addClass('warning'); 
      } 
     }, true); 

     } 
    }; 

:

.warning-message { 
    display: none; 
} 
.warning .warning-message { 
display: block; 
} 
+0

예하하지만 컨트롤러가 두 대 필요합니까? 내가 그것을 모두 할 수 있다면 매끄러운 것입니다. – Per

+0

두 대의 컨트롤러가 필요한 이유는 무엇입니까? – Wawy

+0

죄송합니다. 두 개의 지시문 인 warningMessage와 checkDiameter를 의미합니다. 하나만 가질 수 있습니까? – Per

관련 문제