1

많은 필드 세트가있는 복잡한 양식이 있고 선택한 필드 세트를 변경시 상단으로 이동시킬 선택 요소가 필요합니다. 나는 각도에 익숙하지 않고이 각도에 대해 생각하는 데 어려움을 겪고 있습니다!각도 값이있는 요소 참조

필자는 필드 세트를 가지고 있는데, 'switcher'지시문을 작성하고 초기화시 필드 세트의 전설로 채우고 선택한 요소의 제목을 로깅 할 콘솔을 만들지 만 실제 요소가 필요합니다. 그래서 그것을 DOM의 목록 맨 위로 옮길 수 있습니다. select 옵션의 값을 다른 html 요소와 연관시키는 방법은 무엇입니까? 아니면이 문제에 대한 더 나은 접근법이 있습니까?

내 양식 :

<form> 
    <switcher></switcher> 
    <div class="switchable" ng-include="app/controls/outline"></div> 
    <div class="switchable" ng-include="app/controls/labelling"></div> 
    <div class="switchable" ng-include="app/controls/formatting"></div> 
    <!--... etc...--> 
</form> 

예는 다음과 같습니다

<fieldset> 
    <legend>Outline</legend> 
    <!--some form elements--> 
</fieldset> 

스위처 HTML :

<select ng-change="changeSwitch()" ng-model="selectedMenu"></select> 

스위처 지침 :

angular.module('myApp') 
    .directive('switcher', function ($timeout) { 

    return { 
     templateUrl: 'app/directives/switcher/switcher.html', 
     restrict: 'EA', 
      replace: 'true', 
     link: function (scope, element, attrs) { 
     var setOptions = function() { 
      $('.switchable').each(function(i, ele){ 
      $(element).append('<option>'+$(ele).find('legend').text()+'</option>'); 
      }); 
     } 
     $timeout(setOptions, 0); 

     scope.changeSwitch = function() { 
      console.log(scope.selectedMenu); 
     } 
     } 
    }; 
    }); 

변경시 콘솔에 범례를 인쇄하지만 해당 div를 맨 위로 이동합니다.

답변

0

fieldset 요소를 제어하려면 switcher 요소의 하위 항목으로 만듭니다.

`<switcher> 
    <fieldset switcher-option="Outline"> 
     <legend>Outline</legend> 
     <!--some form elements--> 
    </fieldset> 
</switcher>` 

다음으로 요구하고 컨트롤러의 사용 지침을 스위처 자체를 기록합니다 모든 FIELDSET에 사용자 지정 지시문을 추가합니다. 지시문은 변경 내용의 출처를 이해하기가 어려워지기 때문에 소유하지 않은 요소와 관련해서는 안됩니다. 여기에 plnkr에 대한 링크가 있습니다. 여기에서 코드를 약간 수정하고 새로운 것에 대해 말했기 때문에 변경 사항을 이해하는 데 도움이되는 많은 의견을 추가했습니다.

+0

고마워요. 제가 포함하고있는 것을 실험하기 시작했는데 실제로 포함 된 것이 자신의 지시문 일 필요가 있는지 궁금합니다. 부모를 지정하는 대신 부모에게 첨부하는 방법을 생각하지 않았습니다. 옵션을 배열로 만들어서 그 순서대로 색인을 생성 할 수 있다고 생각합니다. 바인딩을 통해 순서대로 다시 그려지는 것을 의미합니다. – Abby

+0

순서와 일치하도록 필드 집합의 순서를 원한다면 옵션을 선택해야한다면, ** post-link ** 함수 대신에 ** pre-link ** 함수에서 switcher-option 지시문의 로깅 논리를 호출하면됩니다. 포스트 링크에서 논리가 호출되는 순간 옵션이 역순으로 표시됩니다. – getOffMyLawn

+0

그 반대의 경우 - 필드 세트의 순서를 변경하고 싶습니다. 나는 옵션리스트가 배열이고, 인덱스에 의해 정렬 된 다음, onChange가 이동 된 요소를 튀어 나오게하고, 옵션의 인덱스 0에 놓으면 이것을 '각진'할 수 있다고 생각한다. 그리고 스위처가 옵션의 순서에 따라 필드 세트를 끌어 내도록하십시오. 그게 맞는 말이라면 ... – Abby