la definirea directivelor în AngularJS, există trei moduri diferite de a trece în variabile: nici un domeniu de aplicare, domeniul de aplicare moștenit, sau domeniul de aplicare izolat. Indiferent dacă utilizați sau nu sintaxa” controller as ” (și sper că sunteți), trebuie să decideți pe care să o utilizați. În această postare, voi explica diferențele și vă voi sugera de ce ați putea—sau nu—să doriți să le utilizați pe fiecare.

fără Domeniu de aplicare

 scope: false 

utilizarea acestui tip de domeniu de aplicare al directivei este de obicei o practică proastă care ar trebui evitată. Când alegeți această opțiune, specificați că directiva dvs. nu are un domeniu de aplicare propriu și partajează un domeniu de aplicare cu controlorul său părinte. Orice lucru pe care operatorul părinte îl mută sau îl adaugă domeniului de aplicare va fi prezent în directivă și invers.

postarea mea anterioară de pe blog a demonstrat un exemplu pozitiv de utilizare ascope: false în directive. În acest exemplu, l-am folosit pentru a schimba în mod curat DOM în șablonul Directivei mele de nivel superior și toate directivele serveau aceluiași scop simplu (comutarea supereroilor) în aplicația mea. Cred că scope: false poate fi o modalitate excelentă de a introduce organizarea și lizibilitatea într-un șablon, dar dincolo de asta, utilizarea acestuia poate fi o pantă alunecoasă pentru codul spaghetelor greu de înțeles.

domeniul moștenit

scope: true

domeniul moștenit este mult mai sigur pentru datele controlerului părinte decât niciun domeniu. Ca și în cazul opțiuniiscope: false, tot ceea ce există în domeniul de aplicare al controlerului părinte este prezent în directivă. Cu toate acestea, tot ceea ce directiva adaugă domeniului de aplicare nu este partajat cu domeniul de aplicare părinte. Acest lucru protejează datele operatorului părinte, permițând în același timp partajarea acestora cu Directiva.

scope: true este utilă în situațiile în care directiva privind copilul servește scopului mutării datelor privind domeniul de aplicare al părinților. Deși este mai sigur decâtscope:false, utilizarea domeniului moștenit, în special în mod repetat, este un miros arhitectural.

domeniul izolat

scope: { myProperty: '='}

domeniul izolat este cea mai bună practică a tuturor. Cu această opțiune, programatorul definește care atribute sunt transmise Directivei. Nimic altceva nu este partajat între controlerul părinte și directivă.

domeniul de aplicare izolat încurajează (și impune) o arhitectură SPA bună și dezvoltarea de componente mici, concentrate. Utilizarea domeniului izolat (în special cu sintaxa „controller as”) este un semn al unei arhitecturi bune și are ca rezultat o directivă care va fi ușor de convertit într-o componentă unghiulară 2.0.

… Deci, ce folosesc?

totul depinde! Într-o aplicație unghiulară perfectă, ați folosi domeniul de aplicare izolat în toate directivele dvs. Cu toate acestea, nu toate aplicațiile sunt perfecte și nu toate regulile sunt absolute.

  • utilizarea fără scop poate fi utilă pentru organizarea șabloanelor.
  • utilizarea domeniului de aplicare moștenit vă poate ajuta să refactor nici o directivă domeniu de aplicare. Este, de asemenea, util pentru gestionarea arhitecturilor care se concentrează pe mutarea datelor în arborele Directivei, mai degrabă decât returnarea bucăților mici de date actualizate în copac înapoi la controlerul părinte.
  • pentru migrarea unghiulară lină 2.0, ar trebui să începeți să lucrați numai pentru utilizarea domeniului izolat în aplicația dvs.

Lasă un răspuns

Adresa ta de email nu va fi publicată.