テキストを取り込むだけの小さな入力フィールド用のディレクティブを作成しようとしていますが、テキストが内部にある場合はsearchglassからXに動的に変更し、をクリックします。 したがって、必要なHTMLを入力に追加しますが、ネイティブのngディレクティブを実行するだけです。私は角度と希望にかなり新しいです、誰かが助けることができます。そこにいくつかの同様の質問がありますが、本当に役立つものはありません。angleディレクティブ:ng関数を使用してDOM要素を追加する
angular.module('myApp')
.directive('searchBox', function ($compile) {
return {
restrict: 'A',
scope: {
ngModel: '='
}
link: function(scope, element, attrs) {
var appendix = angular.element(
'<span class="input-group-addon" ng-click="ngModel = none">' +
' <i ng-hide="ng-model" class="fa fa-search"></i>' +
' <i ng-show="ng-model" class="fa fa-close"></i>' +
'</span>');
var wrapper = angular.element(
'<div class="input-group input-group-sm search-box-custom"></div>'
);
element
.wrap(wrapper)
.after(appendix);
element.removeAttr("search-box"); //prevent endless compile loop
element.removeAttr("data-search-box"); //prevent endless compile loop*/
$compile(appendix)(scope);
}
};
});
NG-モデルは、入力フィールドに定義されている
<input search-box
type="text"
ng-model-options="{debounce:1000}"
ng-model="inputValue"
placeholder="Hier Tippen..." />
編集:ディレクティブは親スコープに接続されている独自のスコープを持っている必要がありますが、同じであってはならない親の値が可能性があるため、他の状況が異なる
ディレクティブが使用されているあなたのHTMLを共有してください。さらに、jsFiddleまたはplunkerを提供する方が良いでしょう。 –
が入力を追加しました。 'inputValue'自体は、それが対応するコントローラで表現され、うまく動作します。 – Phloppy