javascript - Vad är anledningen att använda bananhakparenteser i Angular?
Varför använder Angular 2 eller Angular 4 bananshakparenteser? Finns det någon specifik anledning till det? Varför följer de inte samma mönster som AngularJS?
Jag vet, det är inte kopplat till någon programmering, men de kan följa samma syntax som i AngularJS:
<input ng-model="hero.name" placeholder="name" type="text">
Angular 2 och dess större versionssyntax hittills:
<input [(ngModel)]="hero.name" placeholder="name" type="text">
Om de gör det, skulle det vara mycket hjälpsamt för människor att anpassa en förändring i Angular JS?
På samma sätt, för ng-repeat, ändrades de till ngFor.
AngulAR 2 och dess större version:
<ul ngFor let-item [ngForOf]="items" let-i="index" [ngForTrackBy]="trackByFn">
<li>...</li>
</ul>
Angular 1:
<ul ng-repeat="item in items track by myTrackingFunction(n)">
<li>...</li>
</ul>
Svar #1
Bananparenteserna är för dubbelriktad bindning.
Se
Bindningssyntax:
Databindning är en mekanism för att samordna vad användare ser med applikationsdata. Även om du skulle kunna skicka värden till och hämta värden från HTML, blir applikationen lättare att skriva, läsa och underhålla om du överlämnar dessa uppgifter till ett bindningsramverk. Du deklarerar helt enkelt bindningar mellan bindningskällor och mål-HTML-element och låter ramverket göra arbetet.
Angular erbjuder många typer av databindning. Denna guide täcker de flesta av dem, efter en övergripande översikt över Angulars databindning och dess syntax.
Bindningstyper kan grupperas i tre kategorier som skiljs åt av riktningen på dataflödet: från källa-till-vy, från vy-till-källa, och i tvåvägs sekvens: vy-till-källa-till-vy.
Svar #2
Bananparenteser... [()] det är ett standard sätt för tvåvägsdatabindning i Angular. Det är en getter och setter. [] för setter medan () för getter, så att kombinera dem för att uppnå tvåvägsdatabindning för ngModel.
Setters [] kan leda till att du får envägsbindning.
Angular (2,4+) är en fullständig omskrivning av Angular1 eftersom Angular har antagit TypeScript som sitt grundspråk och det är helt omskrivet med TypeScript. TypeScript har alla de senaste JavaScript-funktionerna + typer. Vilket kan låta dig säkerställa vilken typ av dataflöde som finns i logiken.
Men detta hindrar inte användaren från att använda AngularJS, vem som helst kan använda det eftersom det också är under utveckling och de försöker hitta ett enkelt sätt att migrera AngularJS till Angular.