Суть этого в том, что в приведенном ниже коде мне нужен 'modalDirective' для доступа к списку создаваемых элементов, который находится внутри 'modalController'.Мне также нужен 'modalDirective', чтобы создать элемент HTML, который использует ng-модель для привязки к переменной области действия внутри 'modalController', поэтому, если есть какой-либо другой способ сделать что-либо из этого, я полностью открыт для него.
Я открываю модал, используя следующие параметры:
var modalOptions = {
templateUrl: 'targetUrl/modalPage.html',
controller: 'modalController'
}
ModalDialogFactory.openModal(modalOptions);
ModalDialogFactory действительно просто открывает модал:
angular.module('myApp')
.factory('ModalDialogFactory', ['$modal', '$rootScope', function ($modal, $rootScope) {
var modalDialogDefaults = {
backdrop: 'static',
keyboard: false,
scope: $rootScope.$new()
};
var modalInstance;
return {
showModal: function (modalOptions) {
var modalConfig = {};
angular.extend(modalConfig, modalDialogDefaults, modalOptions);
modalInstance = $modal.open(modalConfig);
return modalInstance.result;
},
closeModal: function (selectedObjs) {
if (modalInstance != null) {
modalInstance.close(selectedObjs);
}
}
};
}]);
Модал открывается, и контроллер работает нормально.Все идет нормально.Теперь на целевой странице я хочу использовать директиву:
angular.module('myApp').directive('modalDirective', function ($q, $http, $compile) {
return {
restrict: 'EAC',
compile: function(element, attr) {
return function(scope, element, attr) {
// Dynamically create new HTML elements
}
};
});
А затем в modalPage.html я ссылаюсь на модальную директиву:
<div modal-directive></div>
Это тоже работает, директивасоздает динамические элементы HTML, как и ожидалось.Проблема возникает, когда я хочу связать один из этих элементов с переменной области действия внутри 'modalController'.Похоже, что директива не имеет доступа к контроллеру, что, как мне показалось, является проблемой, но я не уверен, в чем проблема.Я попытался добавить эту строку в 'modalDirective':
require: '^^modalController',
Но когда я пытаюсь и требую контроллер, я получаю ошибку:
Error: [$compile:ctreq] Controller 'modalController', required by directive 'modalDirective', can't be found!
Кто-нибудь знает, куда я идунеправильно?