يمكن أن يمثل دمج AngularJS مع التطبيقات القديمة تحديات بسبب عمليات الاسترجاعات الخارجية التي تحتاج إلى التفاعل مع إطار عمل Angular . لمعالجة هذه المشكلة، توفر AngularJS عدة آليات لقابلية التشغيل البيني.
الوصول إلى الخدمات Angular من تعليمات برمجية خارجية
أحد الأساليب هو إنشاء خدمة AngularJS وكشف أساليب الضبط لتحديثها بيانات. يمكن للكود القديم بعد ذلك استدعاء هذه الأساليب من خلال كائن ExternalInterface الخاص بـ AngularJS. داخل الخدمة، يجب أن تقوم وظيفة الضبط بتشغيل حدث باستخدام ناقل الأحداث Angular.
التقاط الأحداث من الخدمات في وحدات التحكم
يمكن لوحدات التحكم الاشتراك في الأحداث المنبعثة من الخدمات. للقيام بذلك، قم أولاً بتعريف اسم الحدث في الخدمة. في وحدة التحكم، استخدم الأسلوب $scope.$on() لتسجيل مستمع الأحداث الذي سيلتقط الأحداث بالاسم ذي الصلة وإجراء أي تحديثات ضرورية لواجهة المستخدم.
القيودمن المهم ملاحظة أن التحديثات المباشرة لبيانات الخدمة من خارج AngularJS قد لا تؤدي دائمًا إلى تشغيل التحديثات في العرض. وذلك لأن AngularJS يستخدم آلية ربط البيانات أحادية الاتجاه. لضمان انعكاس التحديثات في العرض، يجب أن يتم تغليف أي تغييرات في البيانات أو استدعاءات الطريقة على النطاق في وظيفة $apply() الخاصة بـ AngularJS.
مثالما يلي يوضح مقتطف الكود كيفية إعداد خدمة في AngularJS والوصول إليها من AS3 القديم التطبيق:
angular.module('myApp').service('myService', function () { this.data = []; this.setData = الوظيفة (البيانات) { this.data.push(data); this.$emit('dataUpdated', data); }; });angular.module('myApp').service('myService', function () {
this.data = [];
this.setData = function (data) {
this.data.push(data);
this.$emit('dataUpdated', data);
};
});
في وحدة التحكم AngularJS:// in legacy AS3 code
ExternalInterface.call("myService.setData", data);
$scope.$on('dataUpdated', function (event, data) {
// قم بتحديث واجهة المستخدم بالبيانات المستلمة
}); تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3