ما هو أفضل مكان لتسجيل الوكيل والوسيط في Flex Puremvc Framework؟

StackOverflow https://stackoverflow.com/questions/1706600

  •  19-09-2019
  •  | 
  •  

سؤال

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

التعليمات البرمجية الخاصة بي:

  1. ApplicationFacade.as.
  2. startupcommand.as.
  3. startupmediator.as.
  4. loguncommand.as.
  5. loginmediator.as.
  6. loginproxy.as.
  7. loginview.as.

في ApplicationFacade.as. أرسل إشعارا startupcommand.. startupcommand. السجلات startupmediator..

الآن سؤالي:

  1. متى وأين التسجيلapbanmediator. ?
  2. متى وأين التسجيلloginproxy. ?
  3. متى ترسل الإخطار إلىloguncommand. ?
  4. إذا سجلنا apbanmediator. وloginproxy. في loguncommand. مثل

         public class LoginCommand extends SimpleCommand
    implements ICommand {
        override public function execute(notification:INotification):void
        {
            facade.registerProxy( new LoginProxy() );
         facade.registerMediator( new LoginMediator( app ) );
        } } 

    الآن إذا أرسلت إشعاراloguncommand. عدة مرات ثم يخلق سرعة متعددة منloginproxy. و apbanmediator.. وبعد فكيف تجنب ذلك؟

هل كانت مفيدة؟

المحلول

  1. في StartupCommand، أسجل جميع الوسطاء الذين لديهم وجهات نظر حاليا على خشبة المسرح. أنتظر تسجيل أي آراء ووسطاء آخرين حتى يحتاجون إليها.

  2. قمت بتسجيل جميع الوكلاء تقريبا في StartupCommand الخاص بي حتى يتمكنوا من التسجيل من FlashVars وتحميل البيانات من الخادم. بالنسبة لتسجيل الدخول الخاص بك، سأقوم بإنشائه في Startupcommand لبدء التشغيل. بمجرد أن ينمو التطبيق الخاص بك، يمكنك نقله إلى أمر يقوم بإعداد الوسيط تسجيل الدخول الخاص بك.

أقترح وضع التعليمات البرمجية الخاصة بك في عبارة تبديل لضمان رمز تنفيذك على الإخطار الصحيح وإزالة الأمر.

تجاوز الوظيفة العامة تنفيذ (الإخطار: Inotification): Void {
التبديل (إعلام.getName ()) {
حالة appfacade.start_up:
/ / إزالة الأمر البدء
facade.removecommand (إعلام.getname ())؛
فترة راحة؛
}
}

يمكنك أيضا استخدام الطريقة HASPOXY على الواجهة للتأكد من عدم تسجيل دخول اثنين من أجهزة تسجيل الدخول.

إذا (facade.hasproxy (loginproxy.name)) {
Facade.RegisterProxy ...
}

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top