Я в основном пытаюсь понять, как сделать определенный прослушиватель событий в контроллере angular. В частности, когда модальный бутстрап закрывается, я хотел бы запустить функцию в контроллере angular. В jquery вы обычно можете сделать что-то вроде:
$(.some-class).on('click', function() {
// do something
});
У меня есть боковая навигация с изображениями в виде кнопок. У меня есть серые кнопки, когда они неактивны, и красные кнопки, когда они активны. Каждая кнопка запускает модальное окно начальной загрузки.
Я использую:
<a type="button" data-toggle="modal" data-target="#overview" ng-click="launchOverview()">
<img ng-src="{{ sideNavActive.overviewSrc }}" /><br />
</a>
и у меня есть объект в моем контроллере:
$scope.sideNavActive = {
"overviewSrc": "img/side-nav/tab-overview-off.png",
"detailsSrc": "img/side-nav/tab-details-off.png",
"contactSrc": "img/side-nav/tab-contact-off.png"
}
Когда пользователь нажимает одну из боковых кнопок навигации, у меня есть функция ng-click, которая изменяет кнопку на «img/...-on.png», поэтому кнопка становится красной (активной). Когда пользователь нажимает другую кнопку боковой навигации, эта кнопка становится красной, а остальные — серыми.
То, что я пытаюсь сделать, это когда пользователь щелкает в выцветшей области вокруг модального окна, чтобы закрыть его, я также хочу, чтобы все кнопки были сброшены до серого. Согласно документации начальной загрузки, я должен иметь возможность запускать функцию в событии «hidden.bs.modal», но я не могу заставить ее работать в моем угловом контроллере. У меня есть следующая функция, где «#overview» — это мой идентификатор для моего модального окна.
$('#overview').on('hidden.bs.modal', function() {
console.log('function fired!!!!!????');
$scope.sideNavActive = {
"overviewSrc": "img/side-nav/tab-overview-off.png",
"detailsSrc": "img/side-nav/tab-details-off.png",
"contactSrc": "img/side-nav/tab-contact-off.png"
}
})
Однако эта функция не срабатывает, когда модальное окно закрывается, и я не могу понять, почему.
Одна вещь, которую я сделал, чтобы увидеть, действительно ли функция слушает, изменила ее на:
$('body').on('click', function() {
// function code here
}
и это работает. Он срабатывает всякий раз, когда я нажимаю в любом месте, так как он прослушивает элемент «тело». Итак, я знаю, что он прослушивает, но по какой-то причине событие «hidden.bs.modal» не работает.
angular.element('#overview').on('hidden.bs.modal', function() { console.log('function fired!!!!!????'); $scope.sideNavActive = { "overviewSrc": "img/side-nav/tab-overview-off.png", "detailsSrc": "img/side-nav/tab-details-off.png", "contactSrc": "img/side-nav/tab-contact-off.png" } })
и это все равно не сработало. - person Darryl Mendonez   schedule 04.04.2017$scope.launchOverview = function(){}
- person Akashii   schedule 04.04.2017