أنجولار جي إس:التوجيه إلى اتصال وحدة التحكم مع domain.apply لا يعمل

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

سؤال

لدي 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>";

تجريبي

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