AngularJS
Eingebaute Richtlinien
Suche…
Winkelausdrücke - Text vs. Nummer
Dieses Beispiel zeigt, wie Angular-Ausdrücke ausgewertet werden, wenn type="text"
und type="number"
für das Eingabeelement verwendet werden. Betrachten Sie den folgenden Controller und die folgende Ansicht:
Regler
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.textInput = {
value: '5'
};
$scope.numberInput = {
value: 5
};
});
Aussicht
<div ng-app="app" ng-controller="ctrl">
<input type="text" ng-model="textInput.value">
{{ textInput.value + 5 }}
<input type="number" ng-model="numberInput.value">
{{ numberInput.value + 5 }}
</div>
- Bei der Verwendung von
+
in einem Ausdruck gebunden eingegeben Text, wird der Betreiber die Saiten (erstes Beispiel) verketten, 55 auf dem Bildschirm angezeigt wird*
. - Bei der Verwendung von
+
in einem Ausdruck zu Nummerneingabe gebunden, kehrt die Bedienperson die Summe der Zahlen (zweites Beispiel), 10 auf dem Bildschirm angezeigt wird*
.
*
- Bis der Benutzer den Wert im Eingabefeld ändert, ändert sich die Anzeige danach entsprechend.
ngRepeat
ng-repeat
ist eine integrierte Anweisung in Angular, mit der Sie ein Array oder ein Objekt iterieren und ein Element für jedes Element in der Auflistung einmal wiederholen können.
Wiederholen Sie ein Array
<ul>
<li ng-repeat="item in itemCollection">
{{item.Name}}
</li>
</ul>
Woher:
item = einzelner Artikel in der Sammlung
itemCollection = Das Array, das Sie durchlaufen
Wiederholen Sie ein Objekt
<ul>
<li ng-repeat="(key, value) in myObject">
{{key}} : {{value}}
</li>
</ul>
Woher:
key = der Name der Eigenschaft
value = der Wert der Eigenschaft
myObject = das Objekt, das Sie durchlaufen
Filtern Sie Ihren Wiederholungsvorgang nach Benutzereingaben
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText">
{{string}}
</li>
</ul>
Woher:
searchText = Der Text, nach dem der Benutzer die Liste filtern möchte
stringArray = ein Array von Strings, zB ['string', 'array']
Sie können die gefilterten Elemente auch an anderer Stelle anzeigen oder referenzieren, indem Sie der Filterausgabe einen Alias mit as aliasName
.
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText as filteredStrings">
{{string}}
</li>
</ul>
<p>There are {{filteredStrings.length}} matching results</p>
ng-repeat-start und ng-repeat-end
Um mehrere DOM-Elemente durch Definieren eines Start- und Endpunkts zu ng-repeat-start
können Sie die Direktiven ng-repeat-start
und ng-repeat-end
.
<ul>
<li ng-repeat-start="item in [{a: 1, b: 2}, {a: 3, b:4}]">
{{item.a}}
</li>
<li ng-repeat-end>
{{item.b}}
</li>
</ul>
Ausgabe:
- 1
- 2
- 3
- 4
ng-repeat-start
mit ng-repeat-end
.
Variablen
ng-repeat
macht diese Variablen auch innerhalb des Ausdrucks verfügbar
Variable | Art | Einzelheiten |
---|---|---|
$index | Nummer | Entspricht dem Index der aktuellen Iteration ($ index ==== 0 wird beim ersten iterierten Element als wahr ausgewertet; siehe $first ). |
$first | Boolean | Wird beim ersten iterierten Element als wahr ausgewertet |
$last | Boolean | Bewertet am letzten iterierten Element als wahr |
$middle | Boolean | Wird als wahr ausgewertet, wenn das Element zwischen $first und $last |
$even | Boolean | Wertet bei einer geradzahligen Iteration den $index%2===0 true (entspricht $index%2===0 ). |
$odd | Boolean | Wird bei einer ungeradzahligen Iteration als wahr $index%2===1 (entspricht $index%2===1 ) |
Überlegungen zur Leistung
Das Rendern von ngRepeat
kann langsam werden, besonders wenn Sie große Sammlungen verwenden.
Wenn die Objekte in der Auflistung über eine Bezeichner-Eigenschaft verfügen, sollten Sie immer track by
dem Bezeichner statt nach dem gesamten Objekt, der Standardfunktion, nachverfolgen. Wenn keine Kennung vorhanden ist, können Sie immer den integrierten $index
.
<div ng-repeat="item in itemCollection track by item.id">
<div ng-repeat="item in itemCollection track by $index">
Umfang von ngRepeat
ngRepeat
immer einen isolierten ngRepeat
muss sorgfältig darauf geachtet werden, ob auf den übergeordneten Bereich innerhalb der Wiederholung zugegriffen werden muss.
Hier ein einfaches Beispiel, das zeigt, wie Sie einen Wert in Ihrem übergeordneten Bereich von einem Click-Ereignis in ngRepeat
.
scope val: {{val}}<br/>
ctrlAs val: {{ctrl.val}}
<ul>
<li ng-repeat="item in itemCollection">
<a href="#" ng-click="$parent.val=item.value; ctrl.val=item.value;">
{{item.label}} {{item.value}}
</a>
</li>
</ul>
$scope.val = 0;
this.val = 0;
$scope.itemCollection = [{
id: 0,
value: 4.99,
label: 'Football'
},
{
id: 1,
value: 6.99,
label: 'Baseball'
},
{
id: 2,
value: 9.99,
label: 'Basketball'
}];
Wenn bei ng-click
nur val = item.value
vorhanden war, wird der val
im übergeordneten Bereich aufgrund des isolierten Bereichs nicht aktualisiert. Deshalb wird auf den übergeordneten Bereich mit der $parent
Referenz oder mit der controllerAs
Syntax zugegriffen (z. B. ng-controller="mainController as ctrl"
).
Verschachtelte ng-Wiederholung
Sie können auch verschachtelte Wiederholungen verwenden.
<div ng-repeat="values in test">
<div ng-repeat="i in values">
[{{$parent.$index}},{{$index}}] {{i}}
</div>
</div>
var app = angular.module("myApp", []);
app.controller("ctrl", function($scope) {
$scope.test = [
['a', 'b', 'c'],
['d', 'e', 'f']
];
});
Um auf den Index des übergeordneten ng-repeat innerhalb des untergeordneten ng-repeat zuzugreifen, können Sie $parent.$index
.
ngShow und ngHide
Die Direktive ng-show
zeigt oder versteckt das HTML-Element basierend darauf, ob der übergebene Ausdruck wahr oder falsch ist. Wenn der Wert des Ausdrucks falsch ist, wird er ausgeblendet. Wenn es wahr ist, wird es sich zeigen.
Die ng-hide
Anweisung ist ähnlich. Wenn der Wert jedoch falsch ist, wird das HTML-Element angezeigt. Wenn der Ausdruck wahr ist, wird er verborgen.
Controller :
var app = angular.module('app', []);
angular.module('app')
.controller('ExampleController', ExampleController);
function ExampleController() {
var vm = this;
//Binding the username to HTML element
vm.username = '';
//A taken username
vm.taken_username = 'StackOverflow';
}
Aussicht
<section ng-controller="ExampleController as main">
<p>Enter Password</p>
<input ng-model="main.username" type="text">
<hr>
<!-- Will always show as long as StackOverflow is not typed in -->
<!-- The expression is always true when it is not StackOverflow -->
<div style="color:green;" ng-show="main.username != main.taken_username">
Your username is free to use!
</div>
<!-- Will only show when StackOverflow is typed in -->
<!-- The expression value becomes falsy -->
<div style="color:red;" ng-hide="main.username != main.taken_username">
Your username is taken!
</div>
<p>Enter 'StackOverflow' in username field to show ngHide directive.</p>
</section>
ngOptions
ngOptions
ist eine Direktive, die das Erstellen einer HTML-Dropdown-Box für die Auswahl eines Elements aus einem Array vereinfacht, das in einem Modell gespeichert wird. Das ngOptions-Attribut wird verwendet, um dynamisch eine Liste von <option>
-Elementen für das <select>
-Element mithilfe des Arrays oder Objekts zu erstellen, das durch Auswertung des ngOptions-Verständnisausdrucks erhalten wird.
Mit ng-options
das Markup auf ein select-Tag reduziert werden, und die Direktive erstellt das gleiche select:
<select ng-model="selectedFruitNgOptions"
ng-options="curFruit as curFruit.label for curFruit in fruit">
</select>
Es gibt anthere Weg zur Schaffung von select
unter Verwendung ng-repeat
, aber es wird nicht empfohlen , zu verwenden ng-repeat
, wie es vor allem für allgemeine Zwecke verwendet wird , wie die forEach
nur Schleife. Während sich ng-options
speziell für das Erstellen von select
Tag ng-options
eignet.
Das obige Beispiel wäre ng-repeat
<select ng-model="selectedFruit">
<option ng-repeat="curFruit in fruit" value="{{curFruit}}">
{{curFruit.label}}
</option>
</select>
Schauen wir uns das obige Beispiel auch im Detail an.
Datenmodell für das Beispiel:
$scope.fruit = [
{ label: "Apples", value: 4, id: 2 },
{ label: "Oranges", value: 2, id: 1 },
{ label: "Limes", value: 4, id: 4 },
{ label: "Lemons", value: 5, id: 3 }
];
<!-- label for value in array -->
<select ng-options="f.label for f in fruit" ng-model="selectedFruit"></select>
Bei Auswahl erzeugtes Options-Tag:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Auswirkungen:
f.label
ist das Label der <option>
und der Wert enthält das gesamte Objekt.
<!-- select as label for value in array -->
<select ng-options="f.value as f.label for f in fruit" ng-model="selectedFruit"></select>
Bei Auswahl erzeugtes Options-Tag:
<option value="4"> Apples </option>
Auswirkungen:
f.value
(4) ist in diesem Fall der Wert, wenn die Beschriftung noch gleich ist.
<!-- label group by group for value in array -->
<select ng-options="f.label group by f.value for f in fruit" ng-model="selectedFruit"></select>
Bei Auswahl erzeugtes Options-Tag:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Auswirkungen:
Optionen werden nach ihrem value
gruppiert. Optionen mit demselben value
fallen unter eine Kategorie
<!-- label disable when disable for value in array -->
<select ng-options="f.label disable when f.value == 4 for f in fruit" ng-model="selectedFruit"></select>
Bei Auswahl erzeugtes Options-Tag:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Auswirkungen:
"Äpfel" und "Limes" werden deaktiviert (kann nicht ausgewählt werden), weil die Bedingung disable when f.value==4
. Alle Optionen mit dem value=4
müssen deaktiviert werden
<!-- label group by group for value in array track by trackexpr -->
<select ng-options="f.value as f.label group by f.value for f in fruit track by f.id" ng-model="selectedFruit"></select>
Bei Auswahl erzeugtes Options-Tag:
<option value="4"> Apples </option>
Auswirkungen:
Es gibt nicht sichtbare Änderung bei der Verwendung von trackBy
, aber Angular wird durch die Änderungen erkennen id
statt durch Bezugnahme , die die meisten ist immer eine bessere Lösung.
<!-- label for value in array | orderBy:orderexpr track by trackexpr -->
<select ng-options="f.label for f in fruit | orderBy:'id' track by f.id" ng-model="selectedFruit"></select>
Bei Auswahl erzeugtes Options-Tag:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Auswirkungen:
orderBy
ist ein AngularJS-Standardfilter, der die Optionen in aufsteigender Reihenfolge (standardmäßig) anordnet, so dass "Oranges" in diesem ersten Platz erscheint, da seine id
= 1 ist.
Alle <select>
mit ng-options
müssen mit einem ng-model
verbunden sein.
ngModel
Mit ng-model können Sie eine Variable an jeden Eingabefeldtyp binden. Sie können die Variable mit doppelten geschweiften Klammern anzeigen, z. B. {{myAge}}
.
<input type="text" ng-model="myName">
<p>{{myName}}</p>
Wenn Sie das Eingabefeld eingeben oder auf irgendeine Weise ändern, wird der Wert im Absatz sofort aktualisiert.
In diesem Fall steht die Variable ng-model in Ihrem Controller als $scope.myName
. Wenn Sie die controllerAs
Syntax verwenden:
<div ng-controller="myCtrl as mc">
<input type="text" ng-model="mc.myName">
<p>{{mc.myName}}</p>
</div>
Sie müssen auf den Bereich des Controllers verweisen, indem Sie den im Attribut ng-controller definierten Alias des Controllers an die Variable ng-model anhängen. Auf diese Weise müssen Sie nicht $scope
in Ihren Controller injizieren, um Ihre ng-model-Variable zu referenzieren. Die Variable steht als this.myName
in der Controller-Funktion zur Verfügung.
ngClass
Nehmen wir an, Sie müssen den Status eines Benutzers anzeigen und haben mehrere mögliche CSS-Klassen, die verwendet werden können. Angular macht es sehr einfach, aus einer Liste mit mehreren möglichen Klassen auszuwählen, mit denen Sie eine Objektliste mit Bedingungen angeben können. Angular kann die richtige Klasse basierend auf der Wahrhaftigkeit der Bedingungen verwenden.
Ihr Objekt sollte Schlüssel / Wert-Paare enthalten. Der Schlüssel ist ein Klassenname, der angewendet wird, wenn der Wert (bedingt) als wahr ausgewertet wird.
<style>
.active { background-color: green; color: white; }
.inactive { background-color: gray; color: white; }
.adminUser { font-weight: bold; color: yellow; }
.regularUser { color: white; }
</style>
<span ng-class="{
active: user.active,
inactive: !user.active,
adminUser: user.level === 1,
regularUser: user.level === 2
}">John Smith</span>
Angular das überprüfen $scope.user
Objekt das zu sehen , active
Status und die level
Nummer. Abhängig von den Werten in diesen Variablen wendet Angular den passenden Stil auf den <span>
.
ngIf
ng-if
ist eine Anweisung ähnlich wie ng-show
, fügt das Element jedoch aus dem DOM ein oder entfernt es, anstatt es einfach auszublenden. In Angular 1.1.5 wurde die ng-If-Direktive eingeführt. Sie können die ng-if-Direktive ab Version 1.1.5 verwenden. Dies ist nützlich, da Angular keine Digests für Elemente innerhalb einer entfernten ng-if
Angular insbesondere für komplexe Datenbindungen weniger Workload benötigt.
Im Gegensatz zu ng-show
die Direktive ng-if
einen untergeordneten Bereich, der prototypische Vererbung verwendet. Das bedeutet, dass das Festlegen eines primitiven Werts für den untergeordneten Bereich nicht für den übergeordneten Bereich gilt. Um ein Grundelement für den übergeordneten Bereich festzulegen, muss die $parent
Eigenschaft für den untergeordneten Bereich verwendet werden.
JavaScript
angular.module('MyApp', []);
angular.module('MyApp').controller('myController', ['$scope', '$window', function myController($scope, $window) {
$scope.currentUser= $window.localStorage.getItem('userName');
}]);
Aussicht
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
DOM Wenn currentUser
nicht currentUser
ist
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<!-- ng-if: !currentUser -->
</div>
DOM Wenn currentUser
ist
<div ng-controller="myController">
<!-- ng-if: currentUser -->
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
Funktionsversprechen
Die ngIf-Direktive akzeptiert auch Funktionen, die logisch die Rückgabe von true oder false erfordern.
<div ng-if="myFunction()">
<span>Span text</span>
</div>
Der Bereichstext wird nur angezeigt, wenn die Funktion true zurückgibt.
$scope.myFunction = function() {
var result = false;
// Code to determine the boolean value of result
return result;
};
Als Angular-Ausdruck akzeptiert die Funktion jede Art von Variablen.
ngMouseenter und ngMouseleave
Die Direktiven ng-mouseenter
und ng-mouseleave
sind nützlich, um Ereignisse auszuführen und das CSS-Styling anzuwenden, wenn Sie sich in Ihren DOM-Elementen befinden.
Die ng-mouseenter
Direktive führt einen Ausdruck aus, ng-mouseenter
ein Mausereignis eintritt (wenn der Benutzer den Mauszeiger über das DOM-Element bewegt, in dem sich diese Direktive befindet).
HTML
<div ng-mouseenter="applyStyle = true" ng-class="{'active': applyStyle}">
Wenn der Benutzer im obigen Beispiel mit der Maus über das div
, wird applyStyle
auf true
, wodurch wiederum die .active
CSS-Klasse auf die ng-class
.active
.
Die ng-mouseleave
führt einen Ausdruck aus, der ein Mouse-Exit-Ereignis ist.
HTML
<div ng-mouseenter="applyStyle = true" ng-mouseleaver="applyStyle = false" ng-class="{'active': applyStyle}">
Wenn Sie das erste Beispiel erneut verwenden, wird die .active
Klasse jetzt entfernt, wenn der Benutzer den Mauszeiger aus dem div entfernt.
ngDisabled
Diese Direktive ist nützlich, um Eingabeereignisse basierend auf bestimmten vorhandenen Bedingungen zu begrenzen.
Die Direktive ng-disabled
akzeptiert einen Ausdruck, der entweder einen Wahrheitswert oder einen Falschwert ergeben soll.
ng-disabled
wird verwendet, um das disabled
Attribut bedingt auf ein input
anzuwenden.
HTML
<input type="text" ng-model="vm.name">
<button ng-disabled="vm.name.length===0" ng-click="vm.submitMe">Submit</button>
vm.name.length===0
wird als "true" ausgewertet, wenn die Länge der input
vm.name.length===0
beträgt. vm.name.length===0
, dass die Schaltfläche deaktiviert wird, sodass der Benutzer das Klickereignis von ng-click
ngDblclick
Die Anweisung ng-dblclick
ist hilfreich, wenn Sie ein Doppelklickereignis in Ihre DOM-Elemente ng-dblclick
möchten.
Diese Direktive akzeptiert einen Ausdruck
HTML
<input type="number" ng-model="num = num + 1" ng-init="num=0">
<button ng-dblclick="num++">Double click me</button>
Im obigen Beispiel wird der am input
gehaltene Wert erhöht, wenn die Schaltfläche doppelt angeklickt wird.
Eingebaute Richtlinien-Spickzettel
ng-app
Legt den AngularJS-Abschnitt fest.
ng-init
Legt einen Standardvariablenwert fest.
ng-bind
Alternative zur {{}} Vorlage.
ng-bind-template
Bindet mehrere Ausdrücke an die Ansicht.
ng-non-bindable
dass die Daten nicht bindbar sind.
ng-bind-html
Bindet die innere HTML-Eigenschaft eines HTML-Elements.
ng-change
Wertet den angegebenen Ausdruck aus, wenn der Benutzer die Eingabe ändert.
ng-checked
Legt das Kontrollkästchen fest.
ng-class
Legt die CSS-Klasse dynamisch fest.
ng-cloak
Verhindert die Anzeige des Inhalts, bis AngularJS die Kontrolle übernommen hat.
ng-click
Führt eine Methode oder einen Ausdruck aus, wenn auf ein Element geklickt wird.
ng-controller
Fügt der Ansicht eine Controller-Klasse hinzu.
ng-disabled
Steuert die deaktivierte Eigenschaft des Formularelements
ng-form
Legt ein Formular fest
ng-href
Binde AngularJS-Variablen dynamisch an das href-Attribut.
ng-include
Wird verwendet, um ein externes HTML-Fragment abzurufen, zu kompilieren und in Ihre Seite aufzunehmen.
ng-if
Abhängig von einem Ausdruck ein Element im DOM entfernen oder neu erstellen
ng-switch
Bedingtes Umschalten der Steuerung basierend auf übereinstimmenden Ausdrücken.
ng-model
Bindet Elemente der Eingabe, Auswahl, Textbereiche usw. an die Modelleigenschaft.
ng-readonly
Wird verwendet, um das readonly-Attribut für ein Element festzulegen.
ng-repeat
Wird verwendet, um jedes Element in einer Sammlung zu durchlaufen, um eine neue Vorlage zu erstellen.
ng-selected
Wird verwendet, um die ausgewählte Option im Element festzulegen.
ng-show/ng-hide
Elemente auf Basis eines Ausdrucks anzeigen / ausblenden.
ng-src
Binden Sie AngularJS-Variablen dynamisch an das Attribut src.
ng-submit
submit Bindungswinkelausdrücke für Onsubmit-Ereignisse.
ng-value
Bindet Winkelausdrücke an den Wert von.
ng-required
Bindungswinkelausdrücke für Onsubmit-Ereignisse.
ng-style
Legt den CSS-Stil für ein HTML-Element fest.
ng-pattern
Fügt den Musterprüfer zu ngModel hinzu.
ng-maxlength
Fügt den maxlength-Validator zu ngModel hinzu.
ng-minlength
Fügt den Minlength-Validator zu ngModel hinzu.
ng-classeven
Funktioniert in Verbindung mit ngRepeat und wird nur in ungeraden (geraden) Zeilen wirksam.
ng-classodd
Funktioniert in Verbindung mit ngRepeat und wird nur für ungerade (gerade) Zeilen wirksam.
ng-cut
Wird verwendet, um ein benutzerdefiniertes Verhalten beim Ausschneidereignis anzugeben.
ng-copy
Wird verwendet, um ein benutzerdefiniertes Verhalten beim Kopierereignis anzugeben.
ng-paste
Wird verwendet, um ein benutzerdefiniertes Verhalten beim Einfügeereignis anzugeben.
ng-options
Wird verwendet, um eine Liste von Elementen für das Element dynamisch zu generieren.
ng-list
Wird verwendet, um einen String in eine Liste umzuwandeln, die auf dem angegebenen Trennzeichen basiert.
ng-open
Wird verwendet, um das Attribut open für das Element festzulegen, wenn der Ausdruck in ngOpen wahr ist.
ngClick
Die Anweisung ng-click
fügt einem DOM-Element ein Ereignis click hinzu.
Mit ng-click
Anweisung ng-click
können Sie ein benutzerdefiniertes Verhalten angeben, wenn auf ein Element von DOM geklickt wird.
Dies ist nützlich, wenn Sie Klickereignisse an Schaltflächen anhängen und an Ihrem Controller behandeln möchten.
Diese Direktive akzeptiert einen Ausdruck mit dem als $event
verfügbaren $event
HTML
<input ng-click="onClick($event)">Click me</input>
Regler
.controller("ctrl", function($scope) {
$scope.onClick = function(evt) {
console.debug("Hello click event: %o ",evt);
}
})
HTML
<button ng-click="count = count + 1" ng-init="count=0">
Increment
</button>
<span>
count: {{count}}
</span>
HTML
<button ng-click="count()" ng-init="count=0">
Increment
</button>
<span>
count: {{count}}
</span>
Regler
...
$scope.count = function(){
$scope.count = $scope.count + 1;
}
...
Wenn Sie auf die Schaltfläche onClick
, wird beim onClick
Funktion onClick
"Hallo onClick
" gefolgt vom Ereignisobjekt gedruckt.
ngRequired
ng-required
fügt das required
Validierungsattribut einem Element hinzu oder entfernt es. Dadurch wird der require
Validierungsschlüssel für die input
aktiviert und deaktiviert.
Es wird verwendet, um optional festzulegen, ob ein input
einen nicht leeren Wert haben muss. Die Direktive ist hilfreich beim Entwerfen der Validierung komplexer HTML-Formulare.
HTML
<input type="checkbox" ng-model="someBooleanValue">
<input type="text" ng-model="username" ng-required="someBooleanValue">
ng-Modell-Optionen
ng-model-options
können Sie das Standardverhalten von ng-model
ändern. Mit dieser Anweisung können Sie Ereignisse registrieren, die ausgelöst werden, wenn das ng-model aktualisiert wird, und einen Entprellungseffekt hinzufügen.
Diese Direktive akzeptiert einen Ausdruck, der ein Definitionsobjekt oder einen Verweis auf einen Bereichswert auswertet.
Beispiel:
<input type="text" ng-model="myValue" ng-model-options="{'debounce': 500}">
Das obige Beispiel fügt einen Debounce-Effekt von 500 Millisekunden für myValue
, wodurch das Modell 500 ms aktualisiert wird, nachdem der Benutzer die input
(das heißt, wenn die Aktualisierung von myValue
abgeschlossen ist).
Verfügbare Objekteigenschaften
updateOn
:updateOn
an, welches Ereignis an die Eingabe gebunden werden sollng-model-options="{ updateOn: 'blur'}" // will update on blur
debounce
:debounce
eine Verzögerung von einigen Millisekunden gegenüber dem Modellupdate anng-model-options="{'debounce': 500}" // will update the model after 1/2 second
allowInvalid
: Ein boolesches Flag, das einen ungültigen Wert für das Modell ermöglicht, wodurch die Standard-Formularvalidierung umgangen wird. Standardmäßig werden diese Werte alsundefined
behandelt.getterSetter
: Ein boolesches Flag, das angibt, ob dasng-model
als Getter / Setter-Funktion anstelle eines einfachen Modellwerts behandelt werden soll. Die Funktion wird dann ausgeführt und gibt den Modellwert zurück.Beispiel:
<input type="text" ng-model="myFunc" ng-model-options="{'getterSetter': true}"> $scope.myFunc = function() {return "value";}
timezone
: Definiert die Zeitzone für das Modell, wenndate
odertime
eingegebentime
. Typen
ngCloak
Die
ngCloak
Direktive wird verwendet, um zu verhindern, dass die Angular-HTML-Vorlage vom Browser kurz in ihrem rohen (nicht kompilierten) Formular angezeigt wird, während Ihre Anwendung geladen wird. - Quelle anzeigen
HTML
<div ng-cloak>
<h1>Hello {{ name }}</h1>
</div>
ngCloak
kann auf das body-Element angewendet werden. Die bevorzugte Anwendung besteht jedoch darin, mehrere ngCloak-Anweisungen auf kleine Bereiche der Seite anzuwenden, um eine progressive Wiedergabe der Browseransicht zu ermöglichen.
Die ngCloak
Direktive enthält keine Parameter.
Siehe auch: Verhindern des Flimmerns
ngInclude
Mit ng-include können Sie die Steuerung eines Teils der Seite an einen bestimmten Controller delegieren. Möglicherweise möchten Sie dies tun, weil die Komplexität dieser Komponente so wird, dass Sie die gesamte Logik in einem dedizierten Controller kapseln möchten.
Ein Beispiel ist:
<div ng-include
src="'/gridview'"
ng-controller='gridController as gc'>
</div>
Beachten Sie, dass der /gridview
vom Webserver als eindeutige und legitime URL /gridview
werden muss.
Beachten Sie auch, dass das src
-attribute einen Angular-Ausdruck akzeptiert. Dies kann beispielsweise eine Variable oder ein Funktionsaufruf sein oder, wie in diesem Beispiel, eine String-Konstante. In diesem Fall müssen Sie sicherstellen, dass die Quell-URL in einfache Anführungszeichen gesetzt wird , damit sie als String-Konstante ausgewertet wird. Dies ist eine häufige Verwirrung.
In der /gridview
HTML- /gridview
können Sie auf den gridController
so verweisen, als ob er um die Seite gewickelt wäre, zB:
<div class="row">
<button type="button" class="btn btn-default" ng-click="gc.doSomething()"></button>
</div>
ngSrc
Die Verwendung eines Angular-Markups wie {{hash}}
in einem SRC-Attribut funktioniert nicht richtig. Der Browser ruft die URL mit dem wörtlichen Text {{hash}}
bis Angular den Ausdruck in {{hash}}
. ng-src
Direktive ng-src
überschreibt das ursprüngliche src
Attribut für das Image-Tag-Element und löst das Problem
<div ng-init="pic = 'pic_angular.jpg'">
<h1>Angular</h1>
<img ng-src="{{pic}}">
</div>
ngPattern
Die Anweisung ng-pattern
akzeptiert einen Ausdruck, der ein reguläres Ausdrucksmuster ergibt, und verwendet dieses Muster, um eine Texteingabe zu überprüfen.
Beispiel:
Nehmen wir an, wir möchten, dass ein <input>
-Element gültig wird, wenn sein Wert (ng-model) eine gültige IP-Adresse ist.
Vorlage:
<input type="text" ng-model="ipAddr" ng-pattern="ipRegex" name="ip" required>
Regler:
$scope.ipRegex = /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/;
ngValue
Wird meist unter ng-repeat
NgValue ist nützlich, wenn Sie Listen von Optionsfeldern mit ngRepeat dynamisch generieren
<script>
angular.module('valueExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.names = ['pizza', 'unicorns', 'robots'];
$scope.my = { favorite: 'unicorns' };
}]);
</script>
<form ng-controller="ExampleController">
<h2>Which is your favorite?</h2>
<label ng-repeat="name in names" for="{{name}}">
{{name}}
<input type="radio"
ng-model="my.favorite"
ng-value="name"
id="{{name}}"
name="favorite">
</label>
<div>You chose {{my.favorite}}</div>
</form>
ngCopy
Die Direktive ngCopy
gibt das Verhalten an, das für ein ngCopy
werden soll.
Verhindern, dass ein Benutzer Daten kopiert
<p ng-copy="blockCopy($event)">This paragraph cannot be copied</p>
In der Steuerung
$scope.blockCopy = function(event) {
event.preventDefault();
console.log("Copying won't work");
}
ngPaste
Die Anweisung ngPaste
gibt ein benutzerdefiniertes Verhalten an, das ausgeführt werden soll, wenn ein Benutzer Inhalt ngPaste
<input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
pasted: {{paste}}
ngHref
ngHref wird anstelle des href-Attributs verwendet, wenn im href-Wert ein Winkelausdruck vorliegt. Die Direktive ngHref überschreibt das ursprüngliche href-Attribut eines html-Tags mit dem href-Attribut, z. B. tag, tag usw.
Die Anweisung ngHref stellt sicher, dass die Verknüpfung nicht unterbrochen wird, auch wenn der Benutzer auf die Verknüpfung klickt, bevor AngularJS den Code ausgewertet hat.
Beispiel 1
<div ng-init="linkValue = 'http://stackoverflow.com'">
<p>Go to <a ng-href="{{linkValue}}">{{linkValue}}</a>!</p>
</div>
Beispiel 2 In diesem Beispiel wird der Href-Wert dynamisch aus dem Eingabefeld abgerufen und als Href-Wert geladen.
<input ng-model="value" />
<a id="link" ng-href="{{value}}">link</a>
Beispiel 3
<script>
angular.module('angularDoc', [])
.controller('myController', function($scope) {
// Set some scope value.
// Here we set bootstrap version.
$scope.bootstrap_version = '3.3.7';
// Set the default layout value
$scope.layout = 'normal';
});
</script>
<!-- Insert it into Angular Code -->
<link rel="stylesheet" ng-href="//maxcdn.bootstrapcdn.com/bootstrap/{{ bootstrap_version }}/css/bootstrap.min.css">
<link rel="stylesheet" ng-href="layout-{{ layout }}.css">
ngList
Die ng-list
Direktive wird verwendet, um eine begrenzte Zeichenfolge aus einer Texteingabe in ein String-Array oder umgekehrt zu konvertieren.
Die ng-list
Direktive verwendet ein Standardtrennzeichen von ", "
(Komma-Leerzeichen).
Sie können das Trennzeichen manuell festlegen, indem Sie ng-list
ein Trennzeichen wie dieses zuweisen. ng-list="; "
.
In diesem Fall wird das Trennzeichen auf ein Semikolon gefolgt von einem Leerzeichen gesetzt.
Standardmäßig hat ng-list
ein Attribut ng-trim
das auf true gesetzt ist. ng-trim
bei false wird der Leerraum in Ihrem Trennzeichen berücksichtigt. Standardmäßig berücksichtigt ng-list
keine Leerräume, es sei denn, Sie legen ng-trim="false"
.
Beispiel:
angular.module('test', [])
.controller('ngListExample', ['$scope', function($scope) {
$scope.list = ['angular', 'is', 'cool!'];
}]);
Ein Kundenbegrenzer wird gesetzt ;
. Das Modell des Eingabefelds wird auf das Array festgelegt, das für den Bereich erstellt wurde.
<body ng-app="test" ng-controller="ngListExample">
<input ng-model="list" ng-list="; " ng-trim="false">
</body>
Das Eingabefeld wird mit dem Inhalt angezeigt: angular; is; cool!