Я создал директиву подписки по электронной почте, которую вы прикрепляете к форме, и при отправке она отправляет электронное письмо в Campaign Monitor, бла-бла-бла.
Однако я столкнулся со странной проблемой, когда ng-model выходит за пределы изолированной области, а bindToController.
Угловая директива:
angular.module('quiip.directives')
.directive('subscribeToNewsletter', subscribeToNewsletterDirective);
function subscribeToNewsletterDirective(){
return {
restrict: 'A',
scope: {},
bindToController: true,
controllerAs: 'subscribe',
controller: subscribeToNewsletterCtrl,
link: function(scope, el){
el.addClass('subscribe-to-newsletter');
}
}
}
HTML-форма, общая структура. Это зависит от того, где используется форма. Это жестко закодировано (т.е. не шаблон):
<form subscribe-to-newsletter ng-submit="subscribe.submitEmailSubscribe()" ng-class="{ error : subscribe.states.error, success : subscribe.states.success }">
<div class="status-icon loading" ng-show="subscribe.states.loading"><i class="fa fa-circle-o-notch fa-spin"></i></div>
<div class="status-icon success" ng-show="subscribe.states.success"><i class="fa fa-check"></i> Subscribed!</div>
<input type="email" placeholder="Email Address" ng-model="subscribe.email">
<button type="submit" class="hollow">Subscribe to newsletter</button>
</form>
Другой пример формы:
<form class="row" subscribe-to-newsletter ng-submit="subscribe.submitEmailSubscribe()" ng-class="{ error : subscribe.states.error, success : subscribe.states.success }">
<div class="status-icon loading" ng-show="subscribe.states.loading"><i class="fa fa-circle-o-notch fa-spin"></i></div>
<div class="status-icon success" ng-show="subscribe.states.success"><i class="fa fa-check"></i> Subscribed!</div>
<div class="small-12 medium-6 columns">
<input type="email" ng-model="subscribe.email" placeholder="email" name="email-address">
</div>
<div class="small-12 medium-6 columns">
<button type="submit" class="expand">Subscribe</button>
</div>
</form>
Как вы можете видеть на этом снимке экрана, ng-model
ускользает как от изолированной области, так и от controllerAs/bindToController (я даже не уверен, что мне нужно использовать оба?) и распространяется по странице.
Что я делаю не так?
ng-model="subscribe.email"
. - person dfsq   schedule 23.10.2015subscribe.email
будет использовать объект подписки в изолированной области действия директивы - таким образом, не будет конфликтов на странице. Я использовал ng-model для доступа к значению электронной почты в рамках изолированной директивы! - person Harley Alexander   schedule 25.10.2015