1. Was ist der Unterschied zwischen ng-show/ng-hide und ng-wenn?
Wir alle wissen ng-show/ng-hide tatsächlich versteckt und durch display angezeigt wird. Und ng-if kontrolliert tatsächlich die Zugabe und Löschung von dom -Knoten, um dies zu erreichen. Wenn wir dom -Knoten nach verschiedenen Bedingungen laden, ist die Leistung von ng-if besser als ng-show .
2. Erklären Sie, was $ Rootscrope und der Unterschied zu $ Scope ist?
In Layman's Worten ist die Seite $rootScrope alles Vater von $scope .
Schauen wir uns an, wie Sie $rootScope und $scope generieren können.
STEP1: Angular Parses ng-app und erzeugt $rootScope im Gedächtnis.
STEP2: Angular wird weiterhin analysieren, den Ausdruck {{}} finden und ihn in eine Variable analysieren.
Schritt 3: Der DIV mit ng-controller wird dann analysiert und auf eine controller -Funktion hingewiesen. Zu diesem Zeitpunkt wird controller -Funktion zu einer Instanz des $scope -Objekts.
3. Wie funktioniert der Ausdruck {{yourModel}}?
Es hängt vom $interpolation Service ab. Nach der Initialisierung der Seite HTML finden Sie diese Ausdrücke und markieren sie. Jedes Mal, wenn es auf eine {{}} stößt, wird eine $watch festgelegt. $interpolation gibt eine Funktion mit Kontextparametern zurück. Schließlich wird die Funktion ausgeführt und wird als Ausdruck $parse an diesem Bereich angesehen.
4. Was ist der Verdauungszyklus in Angular?
In jedem digest -Zyklus verglichen Angular immer den Wert des model im scope . Im Allgemeinen wird digest -Zyklus automatisch ausgelöst, und wir können auch $apply beantragen, um eine manuelle Auslösen zu beantragen.
5. Wie kann man $ Timeout stornieren und eine $ watch () stoppen?
Stoppen Sie $timeout Wir können cancel verwenden:
var customTimeout = $ timeout (function () {// Ihr Code}, 1000); $ timeout.cancel (CustomTimeOut);Stoppen Sie eine $ Watch:
//.
6. Wie kann ich die Einschränkung in der Winkelrichtlinie festlegen? Was ist der Unterschied zwischen @, =, und im Bereich?
restrict kann separat festgelegt werden:
Ein Matchattribut
E Match -Tag
C Match -Klasse
M Übereinstimmung Kommentare
Natürlich können Sie mehrere Werte wie AEC festlegen, um mehrere Übereinstimmungen zu erstellen.
In scope , @, = und wird jeweils bei der Durchführung der Wertbindung ausgedrückt
@ Einen Set -Zeichenfolge abrufen, der von sich selbst festgelegt oder mit {{yourModel}} gebunden oder gebunden werden kann;
= Bidirektionale Bindung, Bindung einiger Eigenschaften des scope ;
& wird verwendet, um einige Ausdrücke im übergeordneten scope auszuführen. Wir setzen einige Funktionen, die ausgeführt werden müssen.
angular.module('docsIsolationExample', []) .controller('Controller', ['$scope', function($scope) { $scope.alertName = function() { alert('direct scope &'); }}]).directive('myCustomer', function() { return { restrict: 'E', scope: { clickHandle: '&' }, Vorlage: '<Button ng-klick = "testclick ()"> klicken Sie mich </button>', Controller: Funktion ($ scope) {$ scope.testclick = function () {$ scope.clickHandle ();<div ng-app = "docSISolationExample"> <div ng-controller = "Controller"> <My-Customer Click-Handle = "alertName ()"> </my-customer> </div> </div>
<Einwegbindung durchführen.
7. Listen Sie mindestens drei Möglichkeiten auf, die Kommunikation zwischen verschiedenen Modulen zu realisieren?
1. Service
2. Ereignisse geben das gebundene Ereignis an
3. Verwenden Sie $ rootscope
4. Verwenden Sie direkt $ Parent, $$ Childhead usw. zwischen den Controllern
5. Richtlinie gibt Attribute für die Datenbindung an
8. Welche Maßnahmen können die Winkelleistung verbessern können
Offiziell empfohlene, Close debug , $compileProvider
myapp.config (Funktion ($ compileProvider) {$ compileProvider.debuginFoEnabled (false);}); Verwenden Sie einen Bindungsausdruck, d. H. {{::yourModel}}
Reduzieren Sie die Anzahl der Beobachter
Vermeiden Sie es ng-repeat bei unendlicher Scroll-Belastung zu verwenden
Verwenden Sie Geräte für Leistungstests, um Ihre Winkelleistungsprobleme zu untersuchen. Wir können eine einfache console.time() oder Entwickler -Tools und Batarang verwenden
console.time ("Timername"); // Ihre codEconsole.timeend ("Timername");9. Glaubst du, es ist gut, JQuery in Angular zu verwenden?
Dies ist eine offene Frage, und obwohl es viele solche Debatten im Internet gibt, wird allgemein angenommen, dass dies kein besonders guter Versuch ist. Wenn wir Angular lernen, sollten wir die Idee von Angular aus 0, Datenbindung annehmen, einige der APIs verwenden, mit denen Angular ausgestattet ist, ein vernünftiges Routen und organisieren, zu verwandte Anweisungen und Dienste usw. mit vielen APIs ausgestattet ist, die häufig verwendete APIs in JQuery vollständig ersetzen können. Wir können angular.element, $ http, $ timeout, ng-init usw. verwenden.
Wir könnten genauso gut die Perspektive ändern. Wenn die Geschäftsanforderungen erforderlich sind und für einen Newcomer (besser mit JQuery vertraut) kann Ihre Einführung von JQuery dazu beitragen, Probleme zu lösen, z. Mit der Vertiefung des Verständnisses von Angular werden einige der Codes, die eingeführt wurden, wenn JQuery eingeführt wurde, während des Wiederaufbaus allmählich aufgegeben. (?Po ist eine solche Person. Ich hoffe, Sie werden nicht verspottet, aber das Geschäft wird weggetrieben)
Ich denke, es ist definitiv falsch zu sagen, dass die beiden Frameworks überhaupt nicht zusammen verwendet werden können, aber wir sollten unser Bestes geben, um dem Winkeldesign zu folgen.
10. Wie man Winkeleinheiten -Tests durchführt
Wir können Karam + Jasmine für Unit -Tests verwenden. Wir stellen die Winkel -App über Ngmock vor und fügen dann unsere Testfälle selbst hinzu. Ein einfacher Testcode:
beschreiben ('rechner', function () {voran (modul ('rechulatorApp'); var $ controller; voran (inject (function (_ $ controller _) {$ controller = _ $ controller_;}); beschreiben ('sum', function () {it ('1 + 1 sollte Equal 2', Funktion () {) {var $ accopt = {{{}; $ controller ('CalculatorControll', $ scope: $ scope});11. Zusammenfassung
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Studium und die Arbeit aller hilfreich sein. Wenn Sie Fragen haben, überlassen Sie bitte eine Nachricht, um zu diskutieren.