转换然后用angularjs替换

时间:2014-10-24 10:04:59

标签: javascript angularjs angularjs-ng-transclude

我想创建一个替换:

的指令
   <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>指令?

是否可以按如下方式划分流程:compile中的DOM操作和link中的转换?

1 个答案:

答案 0 :(得分: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]);
        }
    }
});

http://jsfiddle.net/b6ww0rx8/10/