När du definierar direktiv i AngularJS finns det tre olika sätt att passera i variabler: inget räckvidd, ärvt räckvidd eller isolerat räckvidd. Oavsett om du använder” controller as ” – syntaxen (och jag hoppas att du är), måste du fortfarande bestämma vilken som ska användas. I det här inlägget förklarar jag skillnaderna och föreslår varför du kanske—eller kanske inte—vill använda var och en.

inget tillämpningsområde

 scope: false 

att använda denna typ av direktiv är vanligtvis en dålig praxis som bör undvikas. När du väljer det här alternativet anger du att ditt direktiv inte har något eget tillämpningsområde och delar ett tillämpningsområde med sin moderkontrollant. Allt som den personuppgiftsansvarige ändrar eller lägger till tillämpningsområdet kommer att finnas i direktivet, och vice versa.

mitt tidigare blogginlägg visade ett positivt exempel på att använda scope: false I direktiv. I det här exemplet använde jag det för att rent byta ut DOM i mallen i mitt toppnivådirektiv, och alla direktiv tjänade samma enkla syfte (byta superhjältar) i min ansökan. Jag tror scope: false kan vara ett bra sätt att introducera organisation och läsbarhet i en mall, men utöver det kan det vara en hal sluttning till spaghettikod som är svår att förstå.

ärvt omfång

scope: true

ärvt omfång är mycket säkrare för din förälderkontrollers data än inget omfång. Som med alternativet scope: false finns allt som finns i moderkontrollens omfattning i direktivet. Allt som direktivet lägger till tillämpningsområdet delas emellertid inte med det överordnade tillämpningsområdet. Detta skyddar den överordnade registeransvariges uppgifter samtidigt som de kan delas med direktivet.

scope: true är användbart i situationer där barndirektivet tjänar syftet att mutera data om föräldraomfånget. Medan säkrare än scope:false, är det en arkitektonisk lukt att använda ärvt räckvidd, särskilt upprepade gånger.

isolerat omfång

scope: { myProperty: '='}

isolerat omfång är bästa praxis för dem alla. Med det här alternativet definierar programmeraren vilka attribut som skickas till direktivet. Inget annat delas mellan föräldrakontrollant och direktiv.

isolerad omfattning uppmuntrar (och verkställer) god SPA-arkitektur och utveckling av små, fokuserade komponenter. Att använda isolerat omfång (särskilt med ”controller as” – syntaxen) är ett tecken på bra arkitektur, och det resulterar i ett direktiv som är lätt att konvertera till en vinkel 2.0-komponent.

… så, vilken använder jag?

allt beror på! I en perfekt vinkel ansökan, skulle du använda isolerade omfattning i alla dina direktiv. Men inte alla applikationer är perfekta, och inte alla regler är absoluta.

  • att använda no scope kan vara till hjälp för att organisera dina mallar.
  • använda ärvt omfattning kan hjälpa dig refactor inga tillämpningsdirektiv. Det är också användbart för att hantera arkitekturer som fokuserar på att mutera data ner i direktivträdet snarare än att returnera små bitar av uppdaterad data upp i trädet tillbaka till moderkontrollanten.
  • för smidig vinkel 2.0 migration, bör du börja arbeta mot endast använda isolerade omfattning i din ansökan.

Lämna ett svar

Din e-postadress kommer inte publiceras.