Мне нужно вызвать функцию, которая относится к $ scope директивы ng, используемой в моем угловом приложении.AngularJS: Как мне вызвать функцию, определенную в области действия директивы от контроллера?
Скажем, директива определяется следующим образом:
.directive('my-directive', ['$document', '$timeout', function ($document, $timeout) {
return {
restrict: 'E',
replace: true,
scope: {
// ....
},
controller: ['$scope', function ($scope) {
$scope.myFunction= function (mouseEnter) {
// ...
};
}
};
}]);
Мне нужно позвонить MYFUNCTION от моего контроллера (назовем его мой-контроллер), который является контроллером представления, где моя директива размещен.
Возможно ли это? (в конечном счете, изменяя директиву)
РЕДАКТИРОВАТЬ: Ответ на уже предоставленный вопрос (предложенный для редактирования) похож на мой, поскольку он не ясен для меня или, по-видимому, не решает конкретной проблемы, которую я предложил.
EDIT 2: от Dan M. ответа (. Без учета MouseEnter/MouseLeave в рассмотрении просто пытаемся сделать два контроллера сообщается друг с другом), я в эфир моего события контроллера моей директивы через $ rootScope (как там нет родитель-ребенок связь между двумя контроллерами) с помощью:
console.log("let's broadcast the event.."); // this is printed
$rootScope.$broadcast('callDirectiveControllersFunction'); // I even tried with $scope in place of $rootScope and $emit in place of $broadcast
и receving его (в регуляторе директивы) по:
var myFunction = function(){
// ...
}
$scope.$on('callDirectiveControllersFunction', function(){
console.log("event received"); // this is not printed
callMyFunction();
});
// I even tried using $rootScope in place of $scope
Однако в ни одного случая (см комментарии в коде) событие получено
Я видел этот ответ, прежде чем спрашивать. однако мне это непонятно, и кажется, что он добавляет некоторую сложность к моей (простой) проблеме. – dragonmnl