Итак, я сделал директиву для переключения (выпадающего) меню в AngularJS. Я использовал директиву для нескольких элементов на странице, но у меня есть небольшая проблема. Когда один элемент открыт, и я нажимаю другой, я хочу, чтобы предыдущий был закрыт. Event.preventDefault и event.stopPropagation останавливает событие для предыдущего элемента и не закрывает его. Есть какие нибудь идеи как это починить? Есть ли способ, возможно, остановить событие только в пределах области?Меню переключателя угловогоJS, предотвращающее по умолчанию для другой директивы
app.directive('toggleMenu', function ($document) {
return {
restrict: 'CA',
link: function (scope, element, attrs) {
var opened = false;
var button = (attrs.menuButton ? angular.element(document.getElementById(attrs.menuButton)) : element.parent());
var closeButton = (attrs.closeButton ? angular.element(document.getElementById(attrs.closeButton)) : false);
var toggleMenu = function(){
(opened ? element.fadeOut('fast') : element.fadeIn('fast'));
};
button.bind('click', function(event){
event.preventDefault();
event.stopPropagation();
toggleMenu();
opened = ! opened;
});
element.bind('click', function(event){
if(attrs.stayOpen && event.target != closeButton[0]){
event.preventDefault();
event.stopPropagation();
}
});
$document.bind('click', function(){
if(opened){
toggleMenu();
opened = false;
}
});
}
};
И вот Fiddle: http://jsfiddle.net/JknUJ/5/ Кнопка открывает содержание и содержание должно закрываться при нажатии вне дел. При нажатии кнопки 2 содержимое 1 не закрывается.
У нас есть любые [скрипки] (http://jsfiddle.net), [plunks] (http://plnkr.co/) или [pens] (http://codepen.io/)? – madhead
Да добавил скрипку! –