AngularJS - jQuery 없이 dom에 HTML 요소 추가
나는 Angular를 가지고 있다.디렉티브의 현재 요소에 svg 태그를 추가하는 JS 디렉티브.지금은 jQuery의 도움으로 이 작업을 하고 있습니다.
link: function (scope, iElement, iAttrs) {
var svgTag = $('<svg width="600" height="100" class="svg"></svg>');
$(svgTag).appendTo(iElement[0]);
...
}
단, 이 간단한 작업에 jQuery를 사용하는 것은 바람직하지 않습니다.어떻게 앵귤러와 같은 일을 할 수 있을까요?JS는 (또는 네이티브 JavaScript 코드)를 의미합니다.
심플한(강력한)을 시험해 보지 않는 이유html()
방법:
iElement.html('<svg width="600" height="100" class="svg"></svg>');
또는append
대체 수단으로서:
iElement.append('<svg width="600" height="100" class="svg"></svg>');
물론, 보다 깔끔한 방법:
var svg = angular.element('<svg width="600" height="100" class="svg"></svg>');
iElement.append(svg);
바이올린: http://jsfiddle.net/cherniv/AgGwK/
angularJS에서는 jQuery의 lite 버전인 angular.element를 사용할 수 있습니다.거의 모든 작업을 수행할 수 있으므로 jQuery를 포함할 필요가 없습니다.
따라서 기본적으로 코드를 다음과 같이 다시 작성할 수 있습니다.
link: function (scope, iElement, iAttrs) {
var svgTag = angular.element('<svg width="600" height="100" class="svg"></svg>');
angular.element(svgTag).appendTo(iElement[0]);
//...
}
이런 게 필요할 거야
var el = document.createElement("svg");
el.style.width="600px";
el.style.height="100px";
....
iElement[0].appendChild(el)
수신인 요소가 비어 있고 다음 요소만 포함할 경우<svg>
사용할 수 있는 태그ng-bind-html
다음과 같습니다.
지시 범위 변수에 HTML 태그를 선언합니다.
link: function (scope, iElement, iAttrs) {
scope.svgTag = '<svg width="600" height="100" class="svg"></svg>';
...
}
그런 다음 디렉티브템플릿에서 svg 태그를 추가할 정확한 위치에 적절한 속성을 추가합니다.
<!-- start of directive template code -->
...
<!-- end of directive template code -->
<div ng-bind-html="svgTag"></div>
포함시키는 것을 잊지 마세요. ngSanitize
허락하다ng-bind-html
HTML 문자열을 신뢰할 수 있는 HTML로 자동 해석하여 안전하지 않은 코드 주입 경고를 방지합니다.
언급URL : https://stackoverflow.com/questions/19488803/angularjs-add-html-element-to-dom-in-directive-without-jquery
'programing' 카테고리의 다른 글
angularjs 1.6.0(지금으로 변경) 루트가 기능하지 않음 (0) | 2023.03.23 |
---|---|
onFocus 및 onBlur가 반응으로 렌더링되지 않음 (0) | 2023.03.23 |
스프링 부트에서의 Servlet Context Listener 등록 방법 (0) | 2023.03.23 |
그리드 또는 테이블을 각도로 표시하는 가장 좋은 방법부트스트랩3이 있는 JS? (0) | 2023.03.23 |
ASP.NET 업데이트 패널 시간 초과 (0) | 2023.03.23 |