私のプロジェクトでは、DOM を変更せず、DOM に存在するアーティファクトを残さないディレクティブを定義する必要があります。AngularJS でこれを機能させることができないようです。
次の例を検討してください。
<div empty-arg="some-param"></div>
<div null-arg="another-param"></div>
関連するディレクティブは次のように定義されています。
var module = angular.module( 'component', [] );
module.directive('emptyArg', function() {
template: '',
replace: true,
scope: false,
link: function() { // ... }
};
module.directive('nullArg', function() {
template: null,
replace: true,
scope: false,
link: function() { // .... }
};
コンパイル後、結果の DOM 要素は次のようになります。
<div></div>
<div></div>
しかし、テンプレートがないと、AngularJS が置換要求を無視し、結果の DOM 要素は次のようになります。
<div empty-arg="some-param"></div>
<div null-arg="another-param"></div>
AngularJS がコンパイル後の DOM でこれらの属性を強制的に削除するにはどうすればよいですか?
これを示す jsFiddle は次の場所にあります。
http://jsfiddle.net/vankirkc/ezN3M/34/
アップデート:
作成された属性を作成後に削除することは可能ですが、私が実際に探しているのは、テンプレート定義パラメーターを活用して、このディレクティブをコピーしないように DOM 要素の作成をインターセプトする方法です。これはバージョン 1.0.3 では不可能のようです。