Saya telah menulis fungsi filter yang akan mengembalikan data berdasarkan argumen yang Anda sampaikan. Saya ingin fungsi yang sama di controller saya. Apakah mungkin untuk menggunakan kembali fungsi filter di controller?
Inilah yang saya coba sejauh ini:
function myCtrl($scope,filter1)
{
// i simply used the filter function name, it is not working.
}
angularjs
angular-filters
ng-controller
sumanth
sumber
sumber
Jawaban:
Suntikkan $ filter ke controller Anda
Lalu di mana pun Anda ingin menggunakan filter itu, gunakan saja seperti ini:
Jika Anda ingin meneruskan argumen ke filter itu, lakukan dengan menggunakan tanda kurung terpisah:
Di mana
arg1
array yang ingin Anda filter danarg2
adalah objek yang digunakan untuk memfilter.sumber
var anyNumber = $filter('number')(12.222222, 2);
untuk mendapatkan12.22
.$filter("currency")(price, "$", 2)
Jadi, jika Anda memiliki harga = 200, ekspresi itu akan menghasilkan "$ 200.00".$filter('filtter1')
(2 t). Namun, jika Anda menyuntikkanfiltter1Filter
Angular akan segera mengeluh bahwa ketergantungan tidak ada.Jawaban yang diberikan oleh @Prashanth benar, tetapi ada cara yang lebih mudah untuk melakukan hal yang sama. Pada dasarnya alih-alih menyuntikkan
$filter
dependensi dan menggunakan sintaks canggung untuk memintanya ($filter('filtername')(arg1,arg2);
) orang dapat menyuntikkan dependensi: filter name plus theFilter
suffix.Mengambil contoh dari pertanyaan yang dapat ditulis:
Perlu dicatat bahwa Anda harus menambahkan
Filter
nama filter, tidak peduli apa konvensi penamaan yang Anda gunakan: foo direferensikan dengan memanggilfooFilter
fooFilter dirujuk dengan memanggil
fooFilterFilter
sumber
Dengan menggunakan kode sampel berikut, kami dapat memfilter array dalam pengontrol sudut dengan nama. ini didasarkan pada uraian berikut. http://docs.angularjs.org/guide/filter
this.filteredArray = filterFilter (this.array, {name: 'Igor'});
JS:
HTML
sumber
Berikut contoh lain penggunaan
filter
di pengontrol Angular:Sederhana ya?
sumber
Ada tiga cara yang mungkin untuk melakukan ini.
Anggap Anda memiliki filter sederhana berikut, yang mengubah string menjadi huruf besar, dengan parameter untuk karakter pertama saja.
Langsung melalui
$filter
Catatan: ini memberi Anda akses ke semua filter Anda.
Tetapkan
$filter
ke avariable
Opsi ini memungkinkan Anda untuk menggunakan
$filter
sejenisnya afunction
.Hanya memuat yang spesifik
Filter
Anda hanya dapat memuat filter tertentu dengan menambahkan nama filter dengan
Filter
.Yang mana yang Anda gunakan datang ke preferensi pribadi, tetapi saya sarankan menggunakan yang ketiga, karena itu pilihan yang paling mudah dibaca.
sumber
sumber
Saya punya contoh lain, yang saya buat untuk proses saya:
Saya mendapatkan Array dengan nilai-Deskripsi seperti ini
di Filters.js saya:
Kemudian, test var (controller):
sumber
AngularJs memungkinkan Anda untuk menggunakan filter di dalam template atau di dalam Controller, Directive dll.
dalam template Anda dapat menggunakan sintaks ini
dan di dalam controller Anda dapat menggunakan suntikan $ penyaring layanan
Jika Anda memerlukan lebih banyak dengan contoh Demo di sini adalah tautan
Contoh filter dan demo AngularJs
sumber
Ada cara lain untuk mengevaluasi filter yang mencerminkan sintaks dari tampilan. Doa itu berbulu tetapi Anda bisa membuat jalan pintas untuk itu. Saya suka bahwa sintaksis string identik dengan apa yang Anda miliki dalam tampilan. Terlihat seperti ini:
sumber
Tampaknya tidak ada yang menyebutkan bahwa Anda dapat menggunakan fungsi sebagai arg2 di $ filter ('filtername') (arg1, arg2);
Sebagai contoh:
sumber
Contoh tanggal sederhana menggunakan $ filter dalam controller adalah:
Seperti yang dijelaskan di sini - https://stackoverflow.com/a/20131782/262140
sumber
Gunakan kode di bawah ini jika kita ingin menambahkan beberapa kondisi, alih-alih nilai tunggal dalam filter sudut javascript:
sumber
Pertama-tama masukkan $ filter ke controller Anda, pastikan ngSanitize dimuat dalam aplikasi Anda, kemudian dalam penggunaan controller adalah sebagai berikut:
Selalu periksa dokumen angularjs
sumber
jika Anda ingin memfilter objek di controller coba ini
Ini akan mengembalikan objek yang difilter sesuai dengan kondisi if
sumber
Reusing An Angular.js Filter - View / Controller
Solusi ini mencakup penggunaan kembali Filter Sudut. Yang merupakan cara lain untuk memfilter data, dan Google mendaratkan saya di sini ketika saya membutuhkannya; dan saya suka berbagi.
Gunakan Kasing
Jika Anda sudah memfilter, ucapkan dalam ng-repeat dalam tampilan Anda (seperti di bawah ini), maka Anda mungkin telah menetapkan filter dalam controller sebagai berikut. Dan kemudian Anda dapat menggunakan kembali seperti pada contoh terakhir.
Contoh Penggunaan Filter - Filtered Repeat in View
Contoh Definisi Filter Sudut
Jadi, konsepnya di sini adalah bahwa Anda sudah menggunakan filter yang dibuat untuk tampilan Anda, dan kemudian menyadari bahwa Anda juga ingin menggunakannya dalam controller Anda.
Penggunaan Fungsi Filter Di Dalam Kontroler Contoh 1
Fungsi Filter Gunakan Dalam Contoh Kontroler 2
Tampilkan Tombol hanya jika tidak ada duplikat ditemukan, menggunakan filter sebelumnya.
Tombol Html
Tampilkan / Sembunyikan Tombol
Beberapa orang mungkin menemukan versi penyaringan ini mudah, dan ini merupakan opsi Angular.js.
Parameter pembanding opsional "benar" yang digunakan dalam tampilan dan dalam panggilan fungsi $ filter menentukan Anda menginginkan perbandingan yang ketat. Jika Anda menghilangkan, nilai dapat dicari lebih dari beberapa kolom.
https://docs.angularjs.org/api/ng/filter/filter
sumber