2250


AngularJS の directive における replace はどうして DEPRECATED なのですか？ また replace
の代替手段には、どのような方法があるのでしょうか？

参考: <https://docs.angularjs.org/api/ng/service/$compile>


CC BY-SA 3.0
2014-12-19T04:03:46.193
2090
2014-12-20T13:40:46.493
2014-12-20T05:06:08.590
2341
2341
question
javascript angularjs
AngularJS の directive における replace はどうして DEPRECATED なのですか？


[**deprecatedにされたコミット**](https://github.com/angular/angular.js/commit/eec6394a342fb92fba5270eee11c83f1d895e9fb)にはこのコメントが添えてありました。

> The `replace` flag for defining directives that  
>  replace the element that they are on will be removed in the next  
>  major angular version.  
>  This feature has difficult semantics (e.g. how attributes are merged)  
>  and leads to more problems compared to what it solves.  
>  Also, with WebComponents it is normal to have custom elements in the DOM.

要約しますと、`replace`の仕様は定義しづらく（例えば、属性がどうやってマージされるかなど）、`replace`が解決してくれる問題に対して`replace`のせいで生じる問題が多いためでした。そしてWebComponentsにおいてはカスタムな要素を使っても問題ない、ということでした。

以下のSO英語版の答えによると、`replace`がなくなっても、同じ仕様の次善策があるそうです。

<https://stackoverflow.com/a/27469582/1945651>


CC BY-SA 3.0
2014-12-20T13:35:46.460
2250
2014-12-20T13:40:46.493
2017-05-23T12:38:55.307
-1
4788
2090
answer