على الرغم من أن Angular يوفر العديد من الخدمات المفيدة ، في بعض التطبيقات الخاصة ، سنجد أنه من المفيد كتابة خدمات مخصصة. إذا كنا نريد القيام بذلك ، نحتاج أولاً إلى تسجيل طريقة مصنع خدمة في الوحدة ، والتي يمكن تمريرها مباشرة من خلال الوحدة النمطية. API (http://docs.angularjs.org/api/Angular.module) أو تم تمريرها مباشرة من خلال $ module (http://docs.angularjsaljsulg/Aapi/AUTOEDEDEREDEREDEREDPROVIDE.
تشارك جميع الخدمات الزاوية في DI (//www.vevb.com/article/91775.htm) ، يمكنك إما تسجيل نفسك بالاسم (معرف) في نظام DI الزاوي (الحاقن) ، أو إعلان التبعيات على الخدمات الحالية في طرق المصنع الأخرى.
1. التسجيل الخدمات
من أجل تسجيل خدمة ، يجب أن يكون لدينا وحدة نمطية وجعل هذا الخادم جزءًا من هذه الوحدة. بعد ذلك ، يمكننا تسجيل الخدمة من خلال واجهة برمجة تطبيقات الوحدة أو في وظيفة تكوين الوحدة النمطية. سيظهر الرمز الزائف التالي هاتين طريقتين للتسجيل.
استخدم Angular.Module API:
var mymodule = Angular.Module ('mymodule' ، []) ؛ mymodule.factory ('serviceId' ، function () {var someservice ؛ // method method ، build someservice return someservice ؛}) ؛استخدم خدمة توفير $:
Angular.Module ('mymodule' ، [] ، function ($ proved) {$ proved.factory ('serviceId' ، function () {var someservice ؛ // factory method ، build someservice return someservice ؛}) ؛}) ؛لاحظ أننا لا نحتاج إلى تسجيل مثيل خدمة ، بدلاً من ذلك ، سيتم إنشاء مثيل لأسلوب المصنع عند استدعاءه.
2. التبعيات
لا يمكن أن تعتمد الخدمة فحسب ، بل لها أيضًا تبعيات خاصة بها. يمكن تحديد التبعيات في معلمات طريقة المصنع. اقرأ (//www.vevb.com/article/91775.htm) المزيد حول DI في الزاوي ، واستخدامات علامات الصفيف وسمة حقن $ لجعل إعلانات DI أكثر إيجازًا. (اقرأ المزيد عن DI في Angular واستخدام تدوين الصفيف وخاصية حقن $ لجعل التعليقات التوضيحية DI مقاومة ...)
إليك مثال خدمة بسيط للغاية. تعتمد هذه الخدمة على خدمة النوافذ $ (تم تمريرها من خلال معلمات طريقة المصنع) ، ولديها طريقة واحدة فقط. تقوم هذه الخدمة ببساطة بتخزين جميع الإخطارات ، بعد الثالثة ، ستعرض هذه الخدمة جميع الإخطارات من خلال Window.Alert.
<! doctype html> <html lang = "zh-cn" ng-app = "mainapp"> <head> <meta charset = "utf-8"> <title> الخدمات </title> </head> <body> <div ng-controller = "myController"> ng-click = "savemsg ()"> حفظ msg </utton> <ul> <li ng-repeat = "msg in msgs"> {{msg}} </li> </ul> </viv> <script src = "../ Angular-1.1.1.js" type/javascript "> Angular.Module ("mainapp" ، [] ، function ($ prode) {$ prove.factory ("Detify" ، ["$ window" ، "$ timeout" ، function (win ، timeout) {var msgs = [] Win.Alert (msgs.join ("/n") ؛ app.controller ("myController" ، الدالة (scope $ ، إخطار) {$ scope.msgs = [] ؛ $ scope.savemsg = function () {this.msgs.push (this.msg) ؛ etreify (th this.msg) ؛ this.msg = "" ؛} ؛}) ؛3.
جميع الخدمات في Angular هي على أساس كسل. هذا يعني أنه لا يتم إنشاء الخدمة إلا عندما تعتمد الخدمات الأخرى أو مكونات التطبيق التي تعتمد عليها. بمعنى آخر ، لن يقوم Angular بتسوية الخدمة حتى يتم طلب الخدمة بشكل مباشر أو غير مباشر.
4. الخدمات كـ singletons
أخيرًا ، يجب أن ندرك أن جميع الخدمات الزاوية هي تطبيق Singleton. هذا يعني أن كل حاقن لديه ومثيل واحد فقط من خدمة معينة. نظرًا لأن Angular مزعج للغاية لتدمير الحالة العالمية ، فمن الممكن إنشاء حقن متعددة بحيث يكون لكل منها مثيلًا لخدمة محددة. باستثناء الطلب القوي في الاختبار ، هناك عدد قليل من هذه الاحتياجات.
ما سبق هو المعلومات حول الخدمات الزاوية. سنستمر في إضافة المعلومات ذات الصلة في المستقبل. شكرا لك على دعمك لهذا الموقع!