저는 AngularJS에서 새로운 점을 알고 있습니다.AngularJS 지시어, 내용 줄 바꾸기 및 원본 요소의 속성 유지
지시문이 적용되는 요소 (및 해당 하위 요소)를 래핑하는 지시문을 만드는 데 약간 문제가 있습니다. 저는이 겉으로보기에는 일반적인 시나리오가 AngularJS에 다른 많은 평범한 것들이 얼마나 쉬운지를 고려하면 왜 그렇게 어려워해야하는지 알지 못합니다. 그래서 여기에 뭔가 빠져 있다는 것이 아주 잘 들릴 수 있습니다.
내가 원하는 것은 div에 select 요소를 래핑하는 것이다. 원래 선택 요소와 내용을 보존하기 위해 transclude를 사용하고 있지만 제대로 작동하지 않습니다.
<select mlb-select ng-options="opt.val as opt.text for opt in mlb" ng-model="mlbOpt"></select>
을 ... 그리고 나의 지침은 다음과 같습니다 :
HTML은 다음과 같습니다
directiveModule.directive("mlbSelect", function(){
return {
template: '<div class="mlb-select">'
+ '<select ng-transclude></select>'
+ '</div>',
transclude: 'element',
replace: true
}
});
결과 HTML은 다음과 같습니다 : 물론
<div class="mlb-select ng-pristine ng-valid" mlb-select ng-options="opt.val as opt.text for opt in mlb" ng-model="mlbOpt">
<select ng-transclude class="ng-scope"></select>
</div>
, 이것은 내가 원하는 것이 아닙니다. 왜 select 요소의 속성이 ng-transclude 속성으로 지정한 요소가 아닌 래핑 div에 추가 되었습니까? select 요소는 ng-options 및 ng-model 속성을 유지해야합니다.
이 작업을 수행하려면 어떻게해야합니까? 이 작업을 수행 할 수있는 유일한 방법 AFAIK
빠른 답장을 보내 주셔서 감사합니다! 내가 그런 식으로 원했던 이유는 형제를 select 요소에 추가하여 지시문을 확장 할 수 있기를 원했기 때문입니다. 필자는 템플릿에 select 요소를 만드는 자체적으로 'create-wrapped-select'지시어를 작성하여 문제를 해결했습니다. 문제는 select 요소에서 임의의 특성을 지원할 수 없다는 것입니다. 그러나 지금은 충분합니다. –
너무 나쁘지는 않습니다. 내 프로젝트에서 모든 선택 드롭 다운에 사용할 수있는 사용자 정의 드롭 다운 버튼으로 스타일을 지정하는 CSS 프레임 워크를 사용하고 있지만 표준 셀렉트를 래핑 된 양식으로 변환 한 지시문을 만들고 싶습니다. 이제는 대신 select 요소를 감싸 줘야합니다. 지시어 요소는 html을 단순화시켜줍니다. – awe