2014-06-20 4 views
2

많은 입력 요소가있는 큰 양식이 있고이 양식을 사용하여 읽기 전용 요소를 렌더링하는 경우 ng-readOnly 양식의 모든 입력 요소에 대한 지시문. 나는 각 입력 요소 하나씩 ng-readOnly를 넣을 수는 있지만 매우 건조하지는 않으며 유지하기 어려울 것입니다.AngularJS에서 입력 요소에 지시문을 동적으로 추가하는 방법

나는 몇 가지 가능성을 생각 :

  1. NG-readOnly 인을 추가 할 수있는 모든 아이들 외모와 NG-readOnly 인 지시
  2. 재정을 입력 지시어를 추가하는 형태로 태그에 대한 지침 scope.readOnly의 지시문이 true입니다.

문제는 이들 중 어느 것이 작동하는지 (Angular에 꽤 새로운) 확실하지 않습니다. 나는 $ compile이나 $ apply를 활용하여 새로 추가 된 지시어를 가져 오는 각도를 얻기 위해 어딘가에 적용해야한다는 것을 안다. 나는 그것에 대해 어떻게해야할지 모르겠다.

답변

2

첫 번째 옵션은 내 의견으로는 좋아 보인다 :

<div ng-app="app" ng-controller="ctrl"> 
    <form transform-inputs> 
    <input type="text" ng-model="model1"/> 
    <input type="text" ng-model="model2"/> 
    <input type="text" ng-model="model3"/> 
    </form> 
</div> 

지침 :

.directive('transformInputs',function($compile){ 
    return{ 
     restrict: 'AE', 
     link: function(scope, elem, attrs){ 
      elem.children('input').attr('ng-read-only',true); 
      $compile(elem.contents())(scope); 
     } 
    } 
}) 
이 대단한

http://jsfiddle.net/aartek/7RHW7/

+1

, 감사합니다. elem 객체가 jQuery 객체라는 사실을 알지 못했지만 실제로 DOM을 훨씬 더 잘 이해하게되었습니다. –

+1

그러나 프로젝트에'jQuery'를 포함하지 않으면'elem'은'jQuery'에서 선택된 메소드 만 제공하는'jQlite' 객체입니다 (https://docs.angularjs.org/api/ng/). 함수/angular.element) – akn

관련 문제