Saya ingin menggunakan filter
dalam sudut dan ingin memfilter untuk beberapa nilai, jika memiliki salah satu dari nilai maka harus ditampilkan.
Saya punya contoh struktur ini:
Objek movie
yang memiliki properti genres
dan saya ingin memfilter untuk Action
dan Comedy
.
Saya tahu saya bisa melakukannya filter:({genres: 'Action'} || {genres: 'Comedy'})
, tetapi apa yang harus saya lakukan jika saya ingin memfilternya secara dinamis. Misalnyafilter: variableX
Bagaimana cara mengatur variableX
di $scope
, ketika saya memiliki array genre yang harus saya filter?
Saya dapat membangunnya sebagai string dan kemudian melakukan eval()
tetapi saya tidak ingin menggunakan eval () ...
javascript
angularjs
angularjs-ng-repeat
JustGoscha
sumber
sumber
filter:({genres: 'Action'} || {genres: 'Comedy'})
bekerja? itu tidak diangular 1.3.16
.Jawaban:
Saya hanya akan membuat filter khusus. Mereka tidak terlalu sulit.
templat:
Sunting di sini adalah tautannya: Membuat Filter Sudut
UPDATE : Ini adalah biola yang memiliki demo yang tepat dari saran saya.
sumber
Anda dapat menggunakan fungsi pengontrol untuk memfilter.
HTML:
sumber
$scope.filteredMovies = $filter('filter')($scope.movies, $scope.filterByGenres);
Membuat filter khusus mungkin berlebihan di sini, Anda bisa meneruskan komparator kustom, jika Anda memiliki nilai kelipatan seperti:
lalu di filter:
sumber
ng-model
ada di file tampilan untuk ditautkan ke filter yang dijelaskan? (maaf, masih belajar di sini) - Aku seperti kesederhanaan jawaban Anda dan mencoba untuk mendapatkannya bekerja tetapi tidak yakin bagaimana untuk label saya<input>
'sng-model
. :)Berikut ini adalah implementasi filter kustom, yang akan memfilter data menggunakan array nilai. Ini akan mendukung objek multi-kunci dengan array dan nilai kunci tunggal. Seperti yang disebutkan di dalam segitigaJS API AngularJS filter Doc mendukung beberapa filter kunci dengan nilai tunggal, tetapi filter kustom di bawah ini akan mendukung fitur yang sama seperti angularJS dan juga mendukung berbagai nilai dan kombinasi dari kedua array dan nilai kunci tunggal. Silakan temukan cuplikan kode di bawah ini,
Pemakaian:
Berikut adalah contoh biola dengan penerapan filter kustom "filterMutiple" di atas . ::: Contoh Fiddle :::
sumber
length property undefined
kesalahan di konsol.if (fData.length > 0){ this.filteredData = fData; }
menjadi:this.filteredData = fData;
Jika Anda ingin memfilter pada Array of Objects maka Anda dapat memberikan
filter:({genres: 'Action', key :value }.
Properti individu akan disaring oleh filter tertentu yang diberikan untuk properti itu.
Tetapi jika Anda ingin sesuatu seperti filter oleh Properti individu dan filter global untuk semua properti maka Anda dapat melakukan sesuatu seperti ini.
~ Atul
sumber
Saya telah meluangkan waktu untuk itu dan terima kasih kepada @ chrismarx, saya melihat bahwa standar angular
filterFilter
memungkinkan Anda untuk melewati komparator Anda sendiri. Berikut komparator yang diedit untuk beberapa nilai:Dan jika kita ingin membuat filter khusus untuk KERING:
Dan kemudian kita dapat menggunakannya di mana saja yang kita inginkan:
Akhirnya di sini adalah sebuah plunkr .
Catatan: Array yang diharapkan hanya boleh berisi objek sederhana seperti String , Number dll.
sumber
Anda dapat menggunakan filter searchField dari angular.filter
JS:
HTML:
sumber
search
Anda juga dapat menggunakan
ngIf
jika situasinya memungkinkan:sumber
Solusi tercepat yang saya temukan adalah menggunakan
filterBy
filter dari angular-filter , misalnya:Sisi baiknya adalah filter sudut adalah pustaka yang cukup populer (~ bintang 2.6k di GitHub) yang masih dikembangkan dan dipelihara secara aktif, jadi sebaiknya menambahkannya ke proyek Anda sebagai dependensi.
sumber
Saya yakin inilah yang Anda cari:
sumber
Silakan coba ini
sumber
Mari kita asumsikan Anda memiliki dua array, satu untuk film dan satu untuk genre
Cukup gunakan filter sebagai:
filter:{genres: genres.type}
Di sini genre menjadi array dan tipe memiliki nilai untuk genre
sumber
Saya menulis ini untuk string DAN fungsionalitas (saya tahu ini bukan pertanyaan, tetapi saya mencarinya dan tiba di sini), mungkin itu dapat diperluas.
Pemakaian:
sumber
Modul Sudut Atau Filter
$filter('orFilter')([{..}, {..} ...], {arg1, arg2, ...}, false)
di sini adalah tautannya: https://github.com/webyonet/angular-or-filter
sumber
Saya memiliki situasi yang serupa. Menulis filter khusus berfungsi untuk saya. Semoga ini membantu!
JS:
HTML:
sumber
Berikut adalah contoh saya cara membuat filter dan arahan untuk table jsfiddle
direktif dapatkan daftar (data) dan buat tabel dengan filter
dengan senang hati jika saya membantu Anda
sumber
Terlambat untuk bergabung dengan pesta tetapi mungkin bisa membantu seseorang:
Kita bisa melakukannya dalam dua langkah, filter pertama dengan properti pertama dan kemudian digabungkan dengan filter kedua:
Lihat biola yang berfungsi dengan beberapa filter properti
sumber
OPSI 1: Menggunakan parameter komparator filter yang disediakan Angular
OPSI 2: Menggunakan negasi filter yang disediakan Angular
sumber
Solusi saya
sumber
jawaban terbaik adalah:
sumber