Angularjs: Директива к контроллеру общение с Scope.apply не работает
-
21-12-2019 - |
Вопрос
У меня есть майнконтроллер и вложенная директива.Я смотрю на Этот пример , чтобы увидеть, какКоммуникационные работы между контроллерами и директивой, но моя не работает.
В основном я хочу вызвать функцию охвата основного контроллера из пользовательской директивы (кнопка пустой корзины).Смотрите пример Plunkr ниже.
plukr: http://plnkr.co/edit/82stlkkxbk6httnmnqlu?p=pReview
Всякий раз, когда я делаю console.log (область применения. $ prime ("optioncart ()")), это не определено по какой-то причине.
Примечание. Я пытаюсь избежать $ rootscope. Бруслыйaoadcast как можно больше ...
Решение
Вы используете область изолята для родительской директивы, поэтому дочерняя директива не имеет доступа к объему контроллера.
Для того, чтобы предоставить дочернюю директиву доступ к этой функции объема при сохранении выделения родителя, вы можете добавить эту функцию в качестве свойства scope: { ... }
на родительской директиве:
scope: {
...
emptyCart: '='
}
.
и установите имя функции в соответствующий атрибут в объявлении представления родительской директивы:
<div ... data-show="showPopup" empty-cart="emptyCart"></div>
.
Тогда вы можете пропустить все обходные пути, которые вы пытались использовать в своем поршене, и просто установил ng-click
на дочернюю директиву, чтобы выстрелить функцию контроллера:
sHTML = "<button ... ng-click='emptyCart()'>Empty cart</button>";
.