Transclude затем заменить на angularjs
Я хотел бы создать директиву, которая заменяет:
<my-overlay class="someOverlay">
<h4>Coucouc</h4>
</my-map-overlay>
С:
<div class="someOverlay default-overlay">
<h4>Coucouc</h4>
</div>
replace
метод пока не рекомендуется.
Как написать директиву, которая манипулирует DOM, создавая div
добавляет default-overlay
класс к предыдущему определенному, включает и заменяет <my-map>
директива?
Можно ли разделить процесс следующим образом: манипулирование DOM в compile
и включив в link
?
1 ответ
Решение
Это коммит для "замены", который будет удален: https://github.com/angular/angular.js/commit/eec6394a342fb92fba5270eee11c83f1d895e9fb
Если вы читаете некоторые из последних комментариев, кажется, что замена не может быть признана устаревшей в конце концов. Однако это может быть способом достижения того, что вы хотите:
.directive('myOverlay', function(){
return {
restrict: 'E',
template: '<div ng-transclude></div>',
transclude: true,
link: function (scope, element) {
element.children()[0].setAttribute('class', element.attr('class') + ' default-overlay');
element.replaceWith(element.children()[0]);
}
}
});