javascript - sukob istih naziva direktiva u AngularJS-u
Pitanje za početnike. Kako izbjeći sukob istih imena direktiva kada koristim vanjske module? Trenutno koristim angular bootstrap modul, ali sam preuzeo drugi modul samo da bih koristio carousel iz njega. Oba imaju ista imena direktiva carousel i to mi uzrokuje probleme ako uključim oba u svoj modul.
var app = angular.module('text', ['fundoo.directives', 'ui.bootstrap']);
Koje bi bilo najbolje rješenje za ovo?
Odgovor #1
Zapravo se sve direktive izvršavaju, možete konfigurirati redoslijed izvršavanja pomoću parametra priority
Prioritet:
Kada je više direktiva definirano na jednom DOM elementu, ponekad je potrebno odrediti redoslijed u kojem se direktive primjenjuju. Prioritet se koristi za sortiranje direktiva prije nego što se pozovu njihove funkcije kompajliranja. Prioritet se definira kao broj. Direktive s većim numeričkim prioritetom se kompajliraju prve. Funkcije pre-linkanja također se izvršavaju prema redoslijedu prioriteta, ali funkcije post-linkanja se izvršavaju u obrnutom redoslijedu. Redoslijed direktiva s istim prioritetom nije definiran. Zadani prioritet je 0.
I također možete reći Angularu da zaustavi obradu direktive u trenutnom elementu kad god pronađete direktivu koja ima postavljen parametar terminal na true
https://docs.angularjs.org/api/ng/service/$compile
I dalje je rješenje o stvaranju prioriteta malo složenije za problem, pa bih se držao rješenja @nico
i također, evo jedan plunker za testiranje da Angular izvršava oboje
http://plnkr.co/edit/e66I71UKp5mnurcjVzN4
Odgovor #2
Ako imate samo jedan sukob imena između direktiva, navedite modul s karuselom koji želite koristiti kao prvu ovisnost. Iz mog testa zaključujem da se dodatne direktive s istim imenom zanemaruju (prva pobjeđuje).