Я сделал модальную директиву для своего углового приложения.
modal-directive.js
'use strict';
backyApp.directive('appModal', function() {
return {
restrict: 'A',
transclude: true,
link: function($scope, elem, attr){
$scope.modalClass = attr.appModal;
},
scope: '@',
templateUrl: './components/modal/modal.html'
};
});
и шаблон выглядит следующим образом: (modal.html
)
<!-- Modal -->
<div class="app-modal" ng-class="modalClass">
<div ng-transclude></div>
</div>
Теперь давайте предположим, что у нас есть 2 модала на странице:
<div app-modal="firstModal">
<div class="form-group">
<input type="text" />
<input type="submit" value="Submit" />
</div>
</div>
</div>
<div app-modal="secondModal">
<div class="form-group">
<input type="text" />
<input type="submit" value="Submit" />
</div>
</div>
</div>
Проблема: у меня есть 2 модала, имеющих один класс (в моем примере выше, secondModal
будет прикреплен к secondModal
моим модалам)
Почему это происходит? Мне нужно, чтобы моя директива была привязана к каждому модальному моменту, потому что это единственный способ открыть тот, который я хочу.
Я знаю, что это ужасное объяснение. Дайте мне знать, если у вас есть какие-либо вопросы
Редактировать:
Я хочу иметь 2 app-modal
divs, каждый из которых имеет свою директивную ценность как класс, прикрепленный к нему. Надеюсь, теперь это станет более ясным.
Используйте изолированную область действия в директиве
backyApp.directive('appModal', function() {
return {
restrict: 'A',
transclude: true,
link: function($scope, elem, attr){
$scope.modalClass = attr.appModal;
},
scope: {},
templateUrl: './components/modal/modal.html'
};
});
Вот плункер, который я сделал для этого https://embed.plnkr.co/UwjBIqTh5fNlAcbIs6TS/
form-group
в первый модал формой, и при отправке я хочу предупредить значение ввода текст там. Как я могу получить доступ к этому? (Я ранее полагался на '@'
для этого.) Мне нужно получить доступ к текстовым полям моего модального режима из моего основного контроллера
scope: '@',
,? Попробуйте удалить егоfirstModal
иsecondModal
. В конце мне нужно дваapp-modal
имеющие каждое из значений моей директивы.