Når du definerer direktiver i AngularJS, er der tre forskellige måder at passere i variabler: intet omfang, arvet omfang eller isoleret omfang. Uanset om du bruger syntaksen “controller som” (og jeg håber du er), skal du stadig beslutte, hvilken der skal bruges. I dette indlæg forklarer jeg forskellene og foreslår, hvorfor du måske—eller måske ikke—vil bruge hver enkelt.

intet anvendelsesområde

 scope: false 

brug af denne type direktivomfang er normalt en dårlig praksis, der bør undgås. Når du vælger denne mulighed, angiver du, at dit direktiv ikke har noget eget anvendelsesområde og deler et anvendelsesområde med dets overordnede dataansvarlige. Alt, hvad den overordnede dataansvarlige muterer eller tilføjer til anvendelsesområdet, vil være til stede i direktivet og omvendt.

mit tidligere blogindlæg viste et positivt eksempel på at bruge scope: false i direktiver. I dette eksempel brugte jeg det til rent at bytte DOM i skabelonen til mit topniveau direktiv, og alle direktiverne tjente det samme enkle formål (skifte Superhelte) i min ansøgning. Jeg tror scope: false kan være en god måde at introducere organisation og læsbarhed i en skabelon, men ud over det kan det være en glat hældning til spaghetti-kode, der er svært at forstå.

nedarvet omfang

scope: true

nedarvet omfang er meget sikrere for din overordnede controllers data end intet omfang. Som med scope: false er alt, hvad der findes på den overordnede controllers anvendelsesområde, til stede i direktivet. Men alt, hvad direktivet tilføjer til anvendelsesområdet, deles ikke med det overordnede anvendelsesområde. Dette beskytter den overordnede dataansvarliges data, samtidig med at de kan deles med direktivet.

scope: true er nyttig i situationer, hvor børnedirektivet tjener formålet med at mutere data om forældreområdet. Mens det er sikrere end scope:false, ved hjælp af arvet omfang, især gentagne gange, er en arkitektonisk lugt.

isoleret omfang

scope: { myProperty: '='}

isoleret omfang er den bedste praksis for dem alle. Med denne mulighed definerer programmøren hvilke attributter der overføres til direktivet. Intet andet deles mellem overordnet controller og direktiv.

isoleret omfang tilskynder (og håndhæver) god SPA-arkitektur og udvikling af små, fokuserede komponenter. Brug af isoleret omfang (især med syntaksen “controller as”) er et tegn på god arkitektur, og det resulterer i et direktiv, der er let at konvertere til en vinkel 2.0-komponent.

… så hvad bruger jeg?

det hele afhænger! I en perfekt Vinkelapplikation vil du bruge isoleret omfang i alle dine direktiver. Men ikke alle applikationer er perfekte, og ikke alle regler er absolutte.

  • brug af intet omfang kan være nyttigt at organisere dine skabeloner.
  • brug af arvelig rækkevidde kan hjælpe dig med at refactor ingen anvendelsesområde direktiver. Det er også nyttigt til styring af arkitekturer, der fokuserer på at mutere data ned i direktivtræet i stedet for at returnere små stykker opdaterede data op i træet tilbage til den overordnede controller.
  • for glat vinkel 2.0-migration skal du begynde at arbejde hen imod kun at bruge isoleret omfang i din applikation.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.