1. ホーム
  2. angularjs

[解決済み] 入力に含まれる ng-model のフィルタ

2022-08-03 11:37:40

質問

テキスト入力があるのですが、ユーザーがスペースを使用することを許可せず、入力されたものはすべて小文字に変換されます。

ng-modelなどでフィルタを使用してはいけないことは知っています。

ng-model='tags | lowercase | no_spaces'

独自のディレクティブを作成することも検討しましたが、関数を $parsers$formatters は入力を更新せず、他の要素にある ng-model を持つ他の要素のみです。

今入力しているものを変更するにはどうしたらよいですか。

私は本質的に、ここStackOverflowにあるのと同じように機能する「タグ」機能を作ろうとしているのです。

どのように解決するのですか?

モデルの値を監視し、変化したときに更新することをお勧めします。 http://plnkr.co/edit/Mb0uRyIIv1eK8nTg3Qng?p=preview

唯一の興味深い問題は、スペースに関するものです。AngularJS 1.0.3のng-model on inputでは、文字列を自動的にトリミングするので、末尾または先頭にスペースを追加してもモデルが変更されたことは検出されません(したがって、私のコードではスペースは自動的に削除されません)。しかし、1.1.1では 'ng-trim' ディレクティブがあり、この機能を無効化することができます ( コミット ). そこで、質問で述べられた機能を正確に実現するために、1.1.1を使用することにしました。