• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

AngularJS && Javascript, tworzenie addEventListenera który zmieni wartość zmiennej $scope

Object Storage Arubacloud
+1 głos
195 wizyt
pytanie zadane 4 marca 2018 w JavaScript przez Ziuziek Mądrala (5,140 p.)
Cześć, mam pytanie istnieje możliwość stworzenia takiego addEventListenera, który po kliknięciu w okno przeglądarki gdziekolwiek niż w menu, zamknie je(czyli zmieni wartość $scope.nestedMenu na false)? Albo by nie zmieniał flagi na false a jakoś je zamykał ? Ktoś ma jakiś pomysł i mógłby mi to wytłumaczyć, jak najlepiej to zrobić? Przykład takiego menu wyświetlanego :

 

https://codepen.io/anon/pen/pamzqa?editors=1111

1 odpowiedź

+1 głos
odpowiedź 4 marca 2018 przez niezalogowany
wybrane 4 marca 2018 przez Ziuziek
 
Najlepsza

Na myśl przychodzi mi takie rozwiązanie (załóżmy, że menu ma klasę "menu")

window.addEventListener('click', function(e) {
    var clickOutsideMenu = !e.target.matches('.menu, .menu *')
    if (clickOutsideMenu) {
        console.log('close menu')
    }
})

Kwestia tylko zintegrowania tego kodu z angularem.

komentarz 4 marca 2018 przez Ziuziek Mądrala (5,140 p.)
co oznacza zapis .menu *
1
komentarz 4 marca 2018 przez niezalogowany
W tym kontekście: dowolny potomek .menu
komentarz 4 marca 2018 przez Ziuziek Mądrala (5,140 p.)
Hej np strona o nazwie tablica, jest stworzona z kilku komponentów i dyrektyw. Żeby uniknąć budowania złożonego serwisu przestawiającego odpowiednio flagi w odpowiednim menu, mogę po prostu usuwać poprzez javascript && addeventlistenera klase active tym menu ? Czy takie rozwiązanie jest nie za bardzo ?
komentarz 4 marca 2018 przez niezalogowany
Ciężko mi powiedzieć, nie znam angularJS (to już technologia na wymarciu). Nie ma on jakiegoś własnego sposobu na podpinanie eventów? Jeżeli Twoje rozwiązanie działa, i ułatwia sprawę, to nie widzę przeszkód.
komentarz 4 marca 2018 przez ScriptyChris Mędrzec (190,190 p.)

Z tego, co pamiętam to niestety w AngularJS dyrektywa ng-click nie wspiera event delegation (a tym można obsłużyć tzw. "off click", czyli zamykanie okienka klikając poza jego obszar), więc pozostaje propozycja od @niezalogowany.

Natomiast, jeśli już chcesz łapać zdarzenia samodzielnie, to wrzuć kod w dyrektywę i użyj jej na elemencie. Customowa obsługa DOMu to zadanie właśnie dla dyrektyw.

https://docs.angularjs.org/guide/directive

What are Directives?

At a high level, directives are markers on a DOM element (such as an attribute, element name, comment or CSS class) that tell AngularJS's HTML compiler ($compile) to attach a specified behavior to that DOM element (e.g. via event listeners), or even to transform the DOM element and its children.

@niezalogowany:

to już technologia na wymarciu 

Nie smuć mnie, proszę - za dużo czasu poświęciłem na naukę tego dinozaura... Wsparcie jeszcze jest. :) Choć oczywiście, nie jest to już "atrakcyjny" framework.

https://github.com/angular/angular.js/commits/master

https://github.com/angular/angular.js/releases

Podobne pytania

0 głosów
2 odpowiedzi 291 wizyt
pytanie zadane 16 marca 2023 w JavaScript przez KonTar Początkujący (440 p.)
+1 głos
2 odpowiedzi 145 wizyt
pytanie zadane 3 kwietnia 2022 w JavaScript przez Bartek030 Obywatel (1,460 p.)
0 głosów
1 odpowiedź 111 wizyt
pytanie zadane 2 października 2018 w JavaScript przez Kondzio Mądrala (5,230 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...