1

フォーム内のフィールド (ラッピング 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 ディレクティブは呼び出されません。

これはおそらく他の投稿と重複していると思いますが、正しい言葉で検索していません。

4

1 に答える 1