العربية  

books example angular gs

If you do not find what you're looking for, you can use more accurate words.

View more

مثال أنغولار جي إس (Info)


في إطار عمل أنغولار، هناك ثلاث طرق فقط يمكن للمكون (الكائن أو الوظيفة) الوصول مباشرةً إلى تبعياته:

  1. يمكن للمكون إنشاء التبعية، عادةً باستخدام عامل new.
  2. يمكن للمكون أن يبحث عن التبعية بالإشارة إلى متغير عام.
  3. يمكن أن ينتقل المكون إلى التبعية إليه عند الحاجة..

أول خيارين لإنشاء التبعيات أو البحث عنها ليسا الأمثل لأنهما يكودا التبعية بشكل ثابت للمكون.

. وهذا يجعل من الصعب، إن لم يكن من المستحيل، تعديل التبعيات. هذا يمثل مشكلة خاصة في الاختبارات، حيث من المستحسن في الغالب توفير تبعيات وهمية لعزل الاختبار.

الخيار الثالث هو الأكثر قابلية للتطبيق، لأنه يزيل مسؤولية تحديد موقع التبعية من المكون. يتم تسليم التبعية ببساطة إلى المكون.

function SomeClass(greeter) { this.greeter = greeter; } SomeClass.prototype.doSomething = function(name) { this.greeter.greet(name); }

في المثال أعلاه، لا تهتم SomeClass بإنشاء أو تحديد مكان تبعية المحيي، بل يتم ببساطة تسليم المحيي عند إنشاء مثيل لها. هذا أمر مرغوب فيه، ولكنه يضع مسؤولية الحصول على التبعية على الكود الذي يبني بعض الأصناف SomeClass.

لإدارة مسؤولية إنشاء التبعية، يحتوي كل تطبيق أنغولار جي إس، على حاقن. الحاقن هو محدد مواقع الخدمة المسؤول عن البناء والبحث عن التبعيات.

فيما يلي مثال على استخدام خدمة الحاقن :

// Provide the wiring information in a module var myModule = angular.module('myModule', []); // Teach the injector how to build a greeter service. // greeter is dependent on the $window service. // The greeter service is an object that // contains a greet method. myModule.factory('greeter', function($window) { return { greet: function(text) { $window.alert(text); } }; });

قم بإنشاء حاقن جديد يمكنه توفير المكونات المعرفة في نموذج myModule وطلب خدمة المحيي من الحاقن. (يتم ذلك تلقائيًا تلقائيًا عن طريق أنغولار جي اس بووتستراب (بالإنجليزية: AngularJS bootstrap)‏.

var injector = angular.injector(['myModule', 'ng']); var greeter = injector.get('greeter');

إن طلب التبعيات يحل مشكلة التكويد الصلب، ولكنه يعني أيضًا أنه يجب تمرير الحاقن في كل التطبيق. تمرير الحاقن يخالف قانون ديميترLaw of Demeter. لعلاج هذا، نستخدم تدوينًا توضيحيًا في قوالب HTML الخاصة بنا، لتسليم مسؤولية إنشاء المكونات إلى الحاقن، كما في هذا المثال:

<div ng-controller="MyController"> <button ng-click="sayHello()">Hello</button> </div>

function MyController($scope, greeter) { $scope.sayHello = function() { greeter.greet('Hello World'); }; }

عندما يقوم أنغولار جي إس، بتجميعHTML، فإنه يعالج توجيه ng-controller، والذي بدوره يطلب من الحاقن إنشاء مثيل من وحدة التحكم وتبعياتها

injector.instantiate(MyController);

تمثيل صنف، فيمكنه تلبية جميع تبعيات MyController دون أن تعرف وحدة التحكم عن الحاقن. يعلن كود التطبيق ببساطة التبعيات التي يحتاجها، دون الحاجة إلى التعامل مع الحاقن. هذا الإعداد لا يخالف قانون ديميتر.

Source: wikipedia.org
 
(5)
Proverbs

Proverbs