Εκφράσεις AngularJS: Πίνακας, Αντικείμενα, $eval, Συμβολοσειρές
⚡ Έξυπνη Σύνοψη
Οι εκφράσεις AngularJS είναι τμήματα κώδικα τοποθετημένα μέσα σε διπλές αγκύλες που συνδέουν δεδομένα απευθείας σε ένα πρότυπο. Αξιολογούν αριθμούς, συμβολοσειρές, αντικείμενα και πίνακες και η συνάρτηση $eval εκτελεί την ίδια αξιολόγηση μέσα από έναν ελεγκτή.
Τι είναι οι εκφράσεις AngularJS;
Οι εκφράσεις είναι μεταβλητές γραμμένες μέσα σε διπλές αγκύλες {{ }}Χρησιμοποιούνται πολύ συχνά στο AngularJS και εμφανίζονται σε όλα τα προηγούμενα σεμινάρια αυτής της σειράς.
⚠️ Ειδοποίηση υποστήριξης: Το AngularJS έφτασε τέλος ζωής στις 31 Δεκεμβρίου 2021 και δεν λαμβάνει περαιτέρω ενημερώσεις κώδικα ή διορθώσεις ασφαλείας. Η παρακάτω σύνταξη παραμένει ακριβής για τη διατήρηση υπαρχουσών εφαρμογών AngularJS 1.x. Τα νέα έργα θα πρέπει να χρησιμοποιούν σύγχρονες Γωνιώδης, όπου εξακολουθούν να υπάρχουν αγκύλες παρεμβολής αλλά ng-init και $eval όχι.
Εξηγήστε τις εκφράσεις AngularJS με ένα παράδειγμα
Οι εκφράσεις AngularJS γράφονται μέσα σε διπλές αγκύλες, όπως στο {{expression}}.
Σύνταξη: ένα απλό παράδειγμα έκφρασης είναι {{5 + 6}}.
Οι εκφράσεις AngularJS συνδέουν δεδομένα σε HTML με τον ίδιο τρόπο όπως η οδηγία ng-bind και το AngularJS εμφανίζει τα δεδομένα ακριβώς εκεί που τοποθετείται η έκφραση.
Σε αυτό το παράδειγμα δείχνουμε μια απλή πρόσθεση αριθμών ως παράσταση.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app=""> Addition : {{6+9}} </div> </body> </html>
Code Επεξήγηση:
- Η οδηγία ng-app είναι κενή, πράγμα που σημαίνει ότι καμία ενότητα δεν παρέχει ελεγκτές, οδηγιώνή υπηρεσίες σε αυτήν τη σελίδα.
- Μια απλή παράσταση προσθέτει δύο αριθμούς.
Παραγωγή:
Γίνεται η πρόσθεση του 9 και του 6 και εμφανίζεται το αποτέλεσμα, 15.
AngularJS Numbers
Οι εκφράσεις λειτουργούν με αριθμούς. Αυτό το παράδειγμα πολλαπλασιάζει δύο αριθμητικές μεταβλητές, margin και profitκαι εμφανίζει το προϊόν.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="margin=2;profit=200"> Total profit margin {{margin*profit}} </div> </body> </html>
Code Επεξήγηση:
- Η οδηγία ng-init ορίζει μεταβλητές και τις τιμές τους στην ίδια την προβολή, όπως ακριβώς οι τοπικές μεταβλητές σε οποιαδήποτε γλώσσα προγραμματισμού. Εδώ
marginκαιprofitδηλώνονται και αποδίδονται. - Η παράσταση στη συνέχεια πολλαπλασιάζει αυτές τις δύο τοπικές μεταβλητές.
Παραγωγή:
Πραγματοποιείται ο πολλαπλασιασμός του 2 με το 200 και εμφανίζεται το γινόμενο, 400.
AngularJS Strings
Οι εκφράσεις λειτουργούν επίσης με συμβολοσειρές. Αυτό το παράδειγμα ορίζει firstName και lastName και εμφανίζει και τα δύο.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="firstName='Guru';lastName='99'"> First Name : {{firstName}}<br> Last Name : {{lastName}} </div> </body> </html>
Code Επεξήγηση:
- Η οδηγία ng-init ορίζει
firstNameμε την τιμή «Guru" καιlastNameμε την τιμή «99». - Οι εκφράσεις
{{firstName}}και{{lastName}}διαβάστε αυτές τις μεταβλητές και εμφανίστε τις στην προβολή.
Παραγωγή:
Και οι δύο τιμές εμφανίζονται στην οθόνη.
Αντικείμενα AngularJS
Οι εκφράσεις λειτουργούν με JavaΓραφή αντικείμενα, τα οποία αποτελούνται από ζεύγη ονόματος-τιμής. Η σύνταξη ενός JavaΤο αντικείμενο script μοιάζει με αυτό:
var car = {type: "Ford", model: "Explorer", color: "White"};
Αυτό το παράδειγμα ορίζει α person αντικείμενο που περιέχει δύο ζεύγη κλειδιού-τιμής, firstName και lastName.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="person={firstName:'Guru',lastName:'99'}"> First Name : {{person.firstName}}<br> Last Name : {{person.lastName}} </div> </body> </html>
Code Επεξήγηση:
- Η οδηγία ng-init ορίζει το αντικείμενο
personμε τα ζεύγη κλειδιού-τιμήςfirstNameοριστεί σε "Guru" καιlastNameέχει οριστεί σε «99». - Οι εκφράσεις
{{person.firstName}}και{{person.lastName}}διαβάστε αυτά τα μέλη. Επειδή ανήκουν στο αντικείμενο, απαιτείται σημειογραφία με τελείες για να επιτευχθούν οι τιμές τους.
Παραγωγή:
Οι τιμές του firstName και lastName εμφανίζονται στην οθόνη.
Πίνακες AngularJS
Οι εκφράσεις λειτουργούν με πίνακες. Αυτό το παράδειγμα ορίζει έναν πίνακα που περιέχει τους βαθμούς ενός μαθητή σε τρία μαθήματα και εμφανίζει κάθε τιμή.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="marks=[1,15,19]"> Student Marks<br> Subject1 : {{marks[0]}}<br> Subject2 : {{marks[1]}}<br> Subject3 : {{marks[2]}} </div> </body> </html>
Code Επεξήγηση:
- Η οδηγία ng-init ορίζει τον πίνακα
marksμε τις τρεις τιμές 1, 15 και 19. - Εκφράσεις της μορφής
marks[index]διαβάστε κάθε στοιχείο.
Παραγωγή:
Εμφανίζονται τα σημάδια που ορίζονται στον πίνακα.
Δυνατότητες και περιορισμοί έκφρασης AngularJS
Δυνατότητες
- Οι εκφράσεις AngularJS μοιάζουν JavaΟι εκφράσεις σεναρίου μοιράζονται μεγάλο μέρος της ίδιας ισχύος και ευελιξίας.
- Πού JavaΤο σενάριο εμφανίζει ένα ReferenceError ή TypeError σε μια απροσδιόριστη ιδιότητα, η αξιολόγηση AngularJS είναι επιεικής και αποδίδει απροσδιόριστη ή μηδενική τιμή.
- Τα φίλτρα μπορούν να εφαρμοστούν μέσα σε μια παράσταση για τη μορφοποίηση δεδομένων πριν από την εμφάνισή τους.
- Ο τριαδικός τελεστής υποστηρίζεται, επομένως
{{ isReady ? 'Yes' : 'No' }}είναι έγκυρο.
Περιορισμοί
- Οι βρόχοι και ο χειρισμός εξαιρέσεων δεν μπορούν να χρησιμοποιηθούν μέσα σε μια έκφραση AngularJS. Η λογική υπό όρους περιορίζεται στον τριαδικό τελεστή.
ifΟι δηλώσεις δεν είναι διαθέσιμες. - Οι συναρτήσεις δεν μπορούν να δηλωθούν σε μια έκφραση, ούτε καν μέσα σε μια οδηγία ng-init.
- Δεν είναι δυνατή η δημιουργία κανονικών εκφράσεων μέσα σε μια έκφραση. Μια κανονική έκφραση είναι ένας συνδυασμός συμβόλων και χαρακτήρων που χρησιμοποιούνται για την αντιστοίχιση συμβολοσειρών, όπως π.χ.
.*\.txt$, και τέτοιες κυριολεκτικές λέξεις απορρίπτονται. - Ο τελεστής κόμμα (
,) Και ηvoidδεν επιτρέπονται.
ng-bind vs Expression Braces: Ποια να χρησιμοποιήσετε
Double Τα braces και η οδηγία ng-bind παράγουν την ίδια απόδοση, επομένως η επιλογή μεταξύ τους φαίνεται αυθαίρετη. Δεν είναι. Τα δύο συμπεριφέρονται διαφορετικά κατά τη στιγμή πριν ολοκληρωθεί η φόρτωση του AngularJS και αυτή η διαφορά είναι ορατή στο άτομο που χρησιμοποιεί τη σελίδα.
| Άποψη | {{ expression }} | ng-bind |
|---|---|---|
| Γραμμένο σε | Περιεχόμενο στοιχείου | Ένα χαρακτηριστικό στοιχείου |
| Πριν από τη φόρτωση του AngularJS | Τα ακατέργαστα σιδεράκια αναβοσβήνουν στην οθόνη | Δεν εμφανίζεται τίποτα |
| ευανάγνωστο | Υψηλότερη — η τιμή βρίσκεται ενσωματωμένη | Κάτω — η τιμή είναι κρυμμένη σε ένα χαρακτηριστικό |
| Πολλαπλές τιμές ανά στοιχείο | Ναι | Όχι, μόνο μία σύνδεση |
| Δέσιμο μίας φοράς | Ναι, με {{::value}} |
Ναι, με ng-bind="::value" |
Η σύντομη εμφάνιση των ακατέργαστων αγκυλών είναι γνωστή ως η λάμψη μη παρεμβαλλόμενου περιεχομένου και συμβαίνει επειδή το πρόγραμμα περιήγησης αποδίδει την σήμανση πριν το μεταγλωττίσει το AngularJS. Χρησιμοποιήστε το ng-bind ή προσθέστε την οδηγία ng-cloak για περιεχόμενο ορατό στο πάνω μέρος. Οι αγκύλες παραμένουν η πιο σαφής και ευανάγνωστη επιλογή παντού αλλού, ειδικά όταν εμφανίζονται πολλές τιμές μέσα σε ένα στοιχείο.
Διαφορά μεταξύ έκφρασης και $eval
The $eval Η συνάρτηση αξιολογεί εκφράσεις από το εσωτερικό του ελεγκτή. Οι εκφράσεις αξιολογούνται στην προβολή, ενώ $eval αξιολογεί στον κώδικα ελεγκτή.
Αυτό το παράδειγμα χρησιμοποιεί $eval για να προσθέσετε δύο αριθμούς και να τοποθετήσετε το αποτέλεσμα στο αντικείμενο παλμογράφου, ώστε η προβολή να μπορεί να το εμφανίσει.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <div ng-app="sampleApp" ng-controller="AngularController"> <h1>Guru99 Global Event</h1> {{value}} </div> <script> var sampleApp = angular.module('sampleApp', []); sampleApp.controller('AngularController', function($scope) { $scope.a = 1; $scope.b = 1; $scope.value = $scope.$eval('a+b'); }); </script> </body> </html>
Code Επεξήγηση:
- Δύο μεταβλητές πεδίου εφαρμογής,
aκαιb, το καθένα έχει την τιμή 1. $scope.$evalαξιολογεί την πρόσθεσή τους και αντιστοιχίζει το αποτέλεσμα στη μεταβλητή εμβέλειαςvalue.- Στη συνέχεια εμφανίζεται η προβολή
value.
Παραγωγή:
Η έξοδος δείχνει την έκφραση που αξιολογήθηκε μέσα στο ελεγκτής, με το άθροισμα των δύο μεταβλητών εμβέλειας που αποστέλλονται και εμφανίζονται στην προβολή.













