У меня проблема, если вы видите Plunker link, я не знаю, как автоматически закрыть окно, когда я выхожу из директивы.DropDown не закрывается по щелчку
Может ли кто-нибудь дать предложения по его устранению?
Благодаря
У меня проблема, если вы видите Plunker link, я не знаю, как автоматически закрыть окно, когда я выхожу из директивы.DropDown не закрывается по щелчку
Может ли кто-нибудь дать предложения по его устранению?
Благодаря
Вот решение по моему комментарию:
http://plnkr.co/edit/2UG1Kj2l3fuVgYXaOB6d?p=preview
У меня есть пользовательский директиву сидит на теле
<body class="container" ng-controller="mainCtrl" dropdown-listener>
который прослушивает окно для событий щелчка ,
Стреляет событие, которое ваш dropdownDirective слушает:
myApp.directive('dropdownListener', function ($window, $rootScope) {
return {
restrict: 'A',
link: function(scope, element, attr) {
var w = angular.element($window);
w.bind('click', function(){
$rootScope.$broadcast('dropdown:close');
});
}
}
});
В ваших dropdownDirective
$scope.$on('dropdown:close', function (event, data) {
$scope.$apply(function() {
if($scope.open) { //only close when it is open
$scope.open = !$scope.open; //quick and dirty solution - withouth apply it didn't work. Maybe you could investigate further
}
});
})
Я понимаю, , но зачем применять этот код, (на вас ссылка plunker), i ca не выберите элемент, который находится в раскрывающемся списке ?, щелкните по элементам?. спасибо – Julio
Обновлено plnkr соответственно. Использует теперь функцию $ event.stopPropgation для всех выпадающих функций. – ilmgb
Вы можете использовать директиву для прослушивания окна, если щелчок произошел транслирует событие (например, «dropdown: close», который прослушивается в вашем dropdownDirective. Затем dropdownDirective просто вызывает вашу функцию, которая переключает выпадающее меню. – ilmgb