フォーム内のフィールド (ラッピング div、ラベル、入力など) のすべての HTML を発行するディレクティブを作成しようとしています。一部のフィールドでは、Angular UI Bootstrap の「typeahead」ディレクティブを使用したいと考えています。
テンプレートで、最初に ng-attr-typeahead='{{myTypeahead}}' を使用してみました。「myTypeahead」が設定されていないフィールドでは、「typeahead」属性の証拠はないと予想しました。代わりに、ディレクティブの処理中に、属性が未定義の値で属性リストに存在し、typeahead ディレクティブが呼び出され、その入力が未定義であるため、すぐに爆発します。
次に、次のようなポストコンパイル関数を使用してみました。
compile: function compile(tElement, tAttrs, transclude) {
return function postLink(scope, iElement, iAttrs, controller) {
if ( iAttrs.eiTypeahead !== undefined ) {
var me = $(iElement);
var input = $("input", me);
input.attr("typeahead", iAttrs.eiTypeahead);
$compile(input[0]);
}
}
}
これにより、input 要素に「typeahead」属性が設定されますが、typeahead ディレクティブは呼び出されません。
これはおそらく他の投稿と重複していると思いますが、正しい言葉で検索していません。