Saya ingin tahu apa sebenarnya dekorator di AngularJS. Tidak ada banyak informasi online untuk dekorator kecuali untuk uraian dalam dokumentasi AngularJS dan penyebutan singkat (meskipun menarik) dalam video youtube .
Seperti yang dikatakan orang Angular sebagai dekorator adalah:
Dekorasi layanan, memungkinkan dekorator untuk mencegat pembuatan contoh layanan. Instance yang dikembalikan mungkin instance asli, atau instance baru yang mendelegasikan ke instance asli.
Saya tidak benar-benar tahu apa artinya itu , dan saya tidak yakin mengapa Anda akan memisahkan logika ini dari layanan itu sendiri. Sebagai contoh jika saya ingin mengembalikan sesuatu yang berbeda dalam kondisi yang berbeda, saya hanya akan memberikan argumen yang berbeda ke fungsi yang relevan atau menggunakan fungsi lain yang berbagi negara pribadi tersebut.
Saya masih semacam Angular noob jadi saya yakin itu hanya ketidaktahuan dan / atau kebiasaan buruk yang saya ambil.
sumber
Dekorator memungkinkan kami untuk memisahkan masalah lintas sektoral dan memungkinkan layanan untuk mempertahankan prinsip tanggung jawab tunggal tanpa khawatir tentang kode "infrastruktur".
Penggunaan praktis dari dekorator:
Dalam semua kasus ini, kami membatasi kode dalam layanan hingga tanggung jawab utamanya.
sumber
decorator
dapat mencegat instance layanan yang dibuat olehfactory, service, value, provider
, dan memberikan opsi untuk mengubah beberapainstance(service)
yang sebaliknya tidak dapat dikonfigurasi / dengan opsi.Ini juga dapat memberikan contoh mock up untuk tujuan pengujian, misalnya
$http
.sumber
directive
definisi yang disajikan oleh Ben NadelDengan kata sederhana kita dapat mengatakan bahwa itu seperti metode ekstensi. Untuk Kel. Kami memiliki kelas dan memiliki dua metode dan pada saat menjalankan kami ingin menambahkan lebih banyak metode di dalamnya maka kami menggunakan Dekorator.
Kami tidak dapat menggunakan $ supply.decorator dengan konstanta karena kami tidak dapat mengubah konstanta yang mereka miliki hanya properti baca.
sumber
Singkatnya dekorator dapat digambarkan sebagai berikut: -
Ia menggunakan
$provide
layanan dengan sudut dan memodifikasi atau mengganti implementasi dari layanan lainContoh:
Aplikasi
Selain jawaban @JBland.
Pengaturan lokal aplikasi luas: -
Anda dapat menemukan contoh di sini
Mengubah perilaku default dan implementasi layanan yang ada dengan layanan sudut: -
Anda dapat menemukan contoh di sini
Mengubah perilaku suatu fungsi di lingkungan yang berbeda.
sumber