أنجولار جي إس:التوجيه إلى اتصال وحدة التحكم مع domain.apply لا يعمل
-
21-12-2019 - |
سؤال
لدي MainController وتوجيه متداخل.أنا أنظر إلى هذا المثال لنرى كيف يعمل الاتصال بين وحدات التحكم والتوجيه، ولكن يبدو أن جهازي لا يعمل.
في الأساس، أريد استدعاء وظيفة نطاق وحدة التحكم الرئيسية من توجيه مخصص (زر عربة التسوق الفارغة).انظر مثال plunkr أدناه.
بلوكر: http://plnkr.co/edit/82STLkKxBK6htTnmnqlu?p=preview
عندما أقوم بعمل console.log(scope.$apply("emptyCart()"))، فهو غير محدد لسبب ما.
ملحوظة:أحاول تجنب $rootScope.broadcast قدر الإمكان...
المحلول
أنت تستخدم نطاقًا معزولًا للتوجيه الأصل، لذا لا يتمتع التوجيه الفرعي بإمكانية الوصول إلى نطاق وحدة التحكم.
من أجل تزويد التوجيه الفرعي بإمكانية الوصول إلى وظيفة النطاق هذه مع الحفاظ على عزل الأصل، يمكنك إضافة هذه الوظيفة كوظيفة scope: { ... }
الخاصية في التوجيه الأصلي:
scope: {
...
emptyCart: '='
}
وقم بتعيين اسم الوظيفة على السمة المقابلة في إعلان عرض التوجيه الأصلي:
<div ... data-show="showPopup" empty-cart="emptyCart"></div>
بعد ذلك، يمكنك تخطي جميع الحلول التي حاولت استخدامها في Plunker، وقم فقط بتعيين ng-click
على توجيه الطفل من أجل إطلاق وظيفة التحكم:
sHTML = "<button ... ng-click='emptyCart()'>Empty cart</button>";