bij het definiëren van richtlijnen in AngularJS, zijn er drie verschillende manieren om door te geven in variabelen: geen scope, overgenomen scope, of geïsoleerde scope. Of je nu de “controller als” syntaxis gebruikt (en ik hoop dat je dat doet), je moet nog steeds beslissen welke je wilt gebruiken. In deze post, Ik zal de verschillen uitleggen en suggereren waarom je zou kunnen—of misschien niet—wilt gebruiken elk.

geen toepassingsgebied

 scope: false 

het gebruik van dit type richtlijn toepassingsgebied is meestal een slechte praktijk die moet worden vermeden. Wanneer u deze optie kiest, geeft u aan dat uw richtlijn geen eigen scope heeft en een scope deelt met de oudercontroller. Alles wat de oudercontroller muteert of toevoegt aan het toepassingsgebied zal in de richtlijn aanwezig zijn, en vice versa.

mijn vorige blog post toonde een positief voorbeeld van het gebruik van scope: false In richtlijnen. In dit voorbeeld gebruikte ik het om DOM netjes uit te wisselen in de sjabloon van mijn top level directive, en alle richtlijnen dienden hetzelfde eenvoudige doel (het wisselen van superhelden) in mijn applicatie. Ik denk dat scope: false een geweldige manier kan zijn om organisatie en leesbaarheid in een template te introduceren, maar verder kan het gebruik ervan een hellend vlak zijn voor spaghetti code die moeilijk te begrijpen is.

overgenomen Scope

scope: true

overgenomen scope is veel veiliger voor de gegevens van uw oudercontroller dan geen scope. Zoals met de optie scope: false, is alles wat bestaat op de scope van de oudercontroller aanwezig in de richtlijn. Alles wat de richtlijn aan het toepassingsgebied toevoegt, wordt echter niet gedeeld met het oorspronkelijke toepassingsgebied. Dit beschermt de gegevens van de ouder verwerkingsverantwoordelijke en maakt het mogelijk deze te delen met de richtlijn.

scope: true is nuttig in situaties waarin de child directive tot doel heeft gegevens over het ouderbereik te muteren. Hoewel veiliger dan scope:false, is het gebruik van overgeërfde scope, vooral herhaaldelijk, een architectonische geur.

geïsoleerde Scope

scope: { myProperty: '='}

geïsoleerde scope is de beste praktijk van allemaal. Met deze optie bepaalt de programmeur welke attributen aan de richtlijn worden doorgegeven. Er wordt niets anders gedeeld tussen oudercontroller en Richtlijn.

geïsoleerde scope stimuleert (en dwingt) goede SPA-architectuur en de ontwikkeling van kleine, gerichte componenten. Het gebruik van geïsoleerde scope (vooral met de “controller als” syntaxis) is een teken van een goede architectuur, en het resulteert in een richtlijn die gemakkelijk te converteren naar een hoekige 2.0 component zal zijn.

… dus, welke moet Ik gebruiken?

Het hangt allemaal af! In een perfecte hoekige toepassing, zou je geïsoleerde scope gebruiken in al uw richtlijnen. Echter, niet alle toepassingen zijn perfect, en niet alle regels zijn absoluut.

  • het gebruik van geen scope kan nuttig zijn om uw sjablonen te organiseren.
  • het gebruik van overgenomen scope kan u helpen geen scope-richtlijnen te refactor. Het is ook handig voor het beheren van architecturen die zich richten op het muteren van gegevens in de directive tree in plaats van het retourneren van kleine stukjes bijgewerkte gegevens in de tree terug naar de ouder controller.
  • voor gladde hoekige 2.0 migratie, moet u beginnen te werken in de richting van alleen het gebruik van geïsoleerde scope in uw toepassing.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.