У нас есть директива с шаблоном и контроллером.Возьмите контроллер угловой директивы
angular.module('someApp').directive('myDirective', [function() {
return {
templateUrl:'someTemplate.html',
controller: ['$scope', function($scope) {
this.someFunction = function() {}
}]
}
}])
Если попытаться получить контроллер в настоящее время
var directive = angular.element('<my-directive />');
$compile(directive)(scope);
var controller = directive.controller('myDirective');
контроллер является неопределенным.
Что вы на самом деле пытаетесь достичь? Другими словами, почему у вас есть необходимость получить контроллер? Возможно, есть лучший подход. –
Мне нужно управлять (создавать, устанавливать данные) мою директиву из службы. Для этого у меня есть функции в контроллере директивы (я прочитал в документации, что директива может использовать свой контроллер для раскрытия API). Поэтому мне нужно получить контроллер директивы для использования этих функций. Честно говоря, я сильно сомневаюсь в этом подходе, но не могу найти другого решения. – andrfas
«... контроллер для отображения API» является правильным, но он предназначен для других директив, которые «требуют» вашей директивы. Это не означает, что API для службы или контроллера не должен иметь дело с DOM. Итак, я не понимаю, что вы подразумеваете под «управлять моей директивой от службы». Службы должны управлять данными - а не директивами –