Angular.js: filter masukan nomor tidak berfungsi jika kita menghapus nilainya

Dibuat pada 26 Nov 2014  ·  5Komentar  ·  Sumber: angular/angular.js

jika kita menghapus nilai masukan angka (kosongkan) idealnya filter tidak diterapkan dan semua nilai harus dicantumkan. Saat ini jika kita menerapkan beberapa filter dengan memasukkan angka, katakanlah 5 di kotak input, itu berfungsi dengan baik dan semua data yang cocok 5 terdaftar. Sekarang jika kita mengosongkan nilai di kotak input, idealnya semua nilai harus dicantumkan (tanpa filter) tetapi sudut menerapkan filter nol untuk angka dan semuanya disaring (ng-repeat tidak mencantumkan apa pun).

input type = "number" ng-model = "age"

filter: usia

Catatan: Tidak ada masalah dengan type = text input

forms low confusing bug

Komentar yang paling membantu

(Seperti yang Anda sebutkan) ini terjadi karena input[number] memberikan null ke model saat field kosong.

Mengharapkan ini bekerja seperti yang Anda harapkan adalah wajar (imo), tetapi saya tidak yakin bagaimana kita bisa mengatasi ini.
Memperbaiki itu di sisi filter tidak diinginkan, karena null dapat menjadi nilai yang valid untuk dicari (dan kami tidak dapat memperlakukannya sebagai tidak terdefinisi). Memperbaiki itu pada NgModelController mungkin juga bukan solusi yang layak.

@ Lainnya : Pikiran?

Sementara itu, Anda dapat menggunakan solusi (tidak terlalu indah) ini:

<input type="number" ng-model="search.posts" />
...
<div ng-repeat="user in users | filter:((search.posts===null)?undefined:search)">...</div

Biola demo

Semua 5 komentar

(Seperti yang Anda sebutkan) ini terjadi karena input[number] memberikan null ke model saat field kosong.

Mengharapkan ini bekerja seperti yang Anda harapkan adalah wajar (imo), tetapi saya tidak yakin bagaimana kita bisa mengatasi ini.
Memperbaiki itu di sisi filter tidak diinginkan, karena null dapat menjadi nilai yang valid untuk dicari (dan kami tidak dapat memperlakukannya sebagai tidak terdefinisi). Memperbaiki itu pada NgModelController mungkin juga bukan solusi yang layak.

@ Lainnya : Pikiran?

Sementara itu, Anda dapat menggunakan solusi (tidak terlalu indah) ini:

<input type="number" ng-model="search.posts" />
...
<div ng-repeat="user in users | filter:((search.posts===null)?undefined:search)">...</div

Biola demo

Kami mengembalikan null karena mengembalikan undefined dari parser menetapkan kesalahan parse. Alasan lain mengapa itu bukan desain terbaik.

@Narretz Saya baru saja akan bertanya mengapa kami tidak mengembalikan undefined :-)

Saya tahu posting ini agak tua tetapi saya mengalami waktu yang sangat buruk untuk mencari tahu bagaimana mengatasi masalah ini jadi saya ingin membagikan solusi saya. Tambahkan acara oninput ke bidang masukan Anda dan di fungsi javascript periksa apakah nilai bidang ini adalah string kosong, jika demikian hapus nilai bidang masukan dengan:
hapus document.getElementById ('apapun'). nilai;

Saya tidak berpikir atribut HTMLInputElement seharusnya dapat dikonfigurasi

Apakah halaman ini membantu?
0 / 5 - 0 peringkat