Meskipun Angular menyediakan banyak layanan yang berguna, dalam beberapa aplikasi khusus, kami akan merasa berguna untuk menulis layanan khusus. Jika kita ingin melakukan ini, pertama -tama kita perlu mendaftarkan metode pabrik layanan dalam modul, yang dapat langsung melewati modul.
Semua layanan sudut terlibat dalam DI (//www.vevb.com/article/91775.htm), Anda dapat mendaftarkan diri Anda dengan nama (ID) dalam sistem DIMular DI (injektor), atau menyatakan dependensi pada layanan yang ada dalam metode pabrik lain.
1. Layanan Mendaftar
Untuk mendaftarkan layanan, kita harus memiliki modul dan menjadikan server ini bagian dari modul ini. Kemudian, kami dapat mendaftarkan layanan melalui API modul atau dalam fungsi konfigurasi modul. Kode semu berikut akan menunjukkan dua metode pendaftaran ini.
Gunakan Angular.module API:
var mymodule = angular.module ('mymodule', []); mymodule.factory ('serviceId', function () {var someservice; // body metode pabrik, membangun someservice return someservice;});Gunakan $ Tersedia Layanan:
angular.module ('mymodule', [], function ($ inced) {$ astancy.factory ('serviceId', function () {var someservice; // badan metode pabrik, membangun someservice return someservice;});});Perhatikan bahwa kami tidak perlu mendaftarkan instance layanan, sebaliknya, metode pabrik akan dipakai saat dipanggil.
2. Ketergantungan
Layanan tidak hanya dapat bergantung, tetapi juga memiliki ketergantungannya sendiri. Ketergantungan dapat ditentukan dalam parameter metode pabrik. Baca (//www.vevb.com/article/91775.htm) Lebih lanjut tentang DI di sudut, penggunaan tag array dan atribut $ suntikan untuk membuat deklarasi DI lebih ringkas. (Baca lebih lanjut tentang DI di sudut dan penggunaan notasi array dan $ suntikan properti untuk membuat anotasi DI-Minifikasi-bukti ...)
Berikut adalah contoh layanan yang sangat sederhana. Layanan ini bergantung pada layanan $ window (melewati parameter metode pabrik), dan hanya memiliki satu metode. Layanan ini hanya menyimpan semua pemberitahuan, setelah yang ketiga, layanan ini akan menampilkan semua pemberitahuan melalui Window.Alert.
<! Doctype html> <html lang = "zh-cn" ng-app = "MainApp"> <head> <meta charset = "UTF-8"> <itement> Layanan </iteme> </head> <body> <v ng-controller = "mycontroller"> <input type = "teks" ng-controller = "msgoller"> <input type = "teks" ng-controller = "msgoller"> <input type = "teks" ng-controller = "msgoller"> <input type = "Text" ng-controller = "msg" msg "<input type =" TEXT "NG-CONTROLLER =" msgoller "> <input type =" Text "ng-controller =" msgoller " msg </button> <ul> <li ng-repeat = "msg di msgs"> {{msg}} </li> </ul> </div> <skrip src = "../ angular-1.0.1.js" type = "text/javascript"> </script> <script type = ”text/javascript"> Text/JavaScript "> </script> <script type =” Text/Javascript "> angular.module ("MainApp", [], function ($ ast) {$ administry.factory ("notify", ["$ window", "$ timeout", function (win, timeout) {var msgs = []; return function (msg) {msgs.push (msg); if (msgs.length == 3) {msgs.push (msg); if (msgs.length == 3) {msgs.push (msg); win.alert (msgs.join ("/n")); app.controller ("mycontroller", function ($ scope, notify) {$ scope.msgs = []; $ scope.savemsg = function () {this.msgs.push (this.msg); notify (this.msg); this.msg = "";};}); </script> </mrictg); this.msg = "";};}); </script> </mrictg); this.msg = "";};}); </script> </body);3. Instantiating Angular Services
Semua layanan di Angular malas dipakai. Ini berarti bahwa layanan ini dibuat hanya ketika layanan instantiated lainnya atau komponen aplikasi yang bergantung padanya tergantung. Dengan kata lain, Angular tidak akan membuat instantiasi layanan sampai layanan diminta secara langsung atau tidak langsung.
4. Layanan sebagai singleton
Akhirnya, kita harus menyadari bahwa semua layanan sudut adalah aplikasi singleton. Ini berarti bahwa setiap injektor memiliki dan hanya satu contoh dari layanan yang diberikan. Karena Angular sangat menjengkelkan untuk menghancurkan negara global, layak untuk membuat beberapa injektor sehingga masing -masing memiliki instance dari layanan yang ditentukan. Kecuali untuk permintaan yang kuat dalam pengujian, umumnya ada beberapa kebutuhan seperti itu.
Di atas adalah informasi tentang layanan sudut. Kami akan terus menambahkan informasi yang relevan di masa mendatang. Terima kasih atas dukungan Anda untuk situs ini!