2017-01-06 5 views

答えて

1

通常は、ng-blurを使用することによってそれを行うことができるが、何らかの理由でmd-autocompleteで使用でそのディレクティブに問題がある必要があります:https://github.com/angular/material/issues/3906

しかし、私は、違っそれを解決するために、ほとんどありませんみました正しい方法ですが、機能します。あなたがしなければならないのはblurinputの中のバインドイベントです。md-autocompleteです。この場合、md-autocompleteのsearchTextをクリアする必要があります。だから何とかそのようなあなたのコントローラでそのイベントをバインド:

angular.element(document.querySelector('md-autocomplete input')).bind('blur', 
    function(){ 
     setTimeout(function(){ 
      angular.element(document.querySelector('md-autocomplete')).scope().ctrl.searchText = ''; 
      angular.element(document.querySelector('md-autocomplete')).scope().$apply(); 
     }, 300); 
    } 
) 

私はタイムアウトを使用する理由は、検索テキスト変数があまりにも速くクリアされた場合のチップが追加されていなかったという事実でした。しかし、私は300msの遅延を追加したとき、期待どおりに機能しました。確かにそれを行うより良い方法がありますが、それだけでこのようにしようとすると、おそらくそれはあなたのために十分でしょう。

ここで動作しています:http://codepen.io/anon/pen/QdNydx

+0

返信ありがとうPatryk。それは動作していないようです。その機能は私のコントローラでは決して呼び出されません。私はコントローラーの構文を使用しているためかもしれないと思っています。 vm = this;だから私はctrl.searchTextをvm.searchTextに置き換えても何の効果もないようです。 – Flash

+0

ブラウザのコンソールで試してみてください。あなたのコントローラである変数をチェックし、あなたが正しい検索テキスト変数を持っていることを確認してください。 –

+0

また、あなたのコードを添付している場合は、 plunkr、codepen、またはjsfiddleがもっと助けてくれるかもしれない –

関連する問題