AngularJS
Ingebouwde richtlijnen
Zoeken…
Hoekige uitdrukkingen - Tekst versus nummer
Dit voorbeeld laat zien hoe hoekuitdrukkingen worden geëvalueerd bij gebruik van type="text"
en type="number"
voor het invoerelement. Overweeg de volgende controller en bekijk:
controleur
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.textInput = {
value: '5'
};
$scope.numberInput = {
value: 5
};
});
Visie
<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>
- Wanneer u
+
in een uitdrukking die aan tekstinvoer is gebonden, zal de operator de tekenreeksen samenvoegen (eerste voorbeeld), waarbij 55 op het scherm wordt weergegeven*
. - Wanneer u
+
in een uitdrukking die aan nummerinvoer is gebonden, retourneert de operator de som van de getallen (tweede voorbeeld), waarbij 10 op het scherm wordt weergegeven*
.
*
- Dat is totdat de gebruiker de waarde in het invoerveld wijzigt, daarna zal het display dienovereenkomstig veranderen.
ngRepeat
ng-repeat
is een ingebouwde richtlijn in Angular waarmee je een array of een object kunt herhalen en waarmee je een element voor elk item in de collectie een keer kunt herhalen.
Herhaal een array
<ul>
<li ng-repeat="item in itemCollection">
{{item.Name}}
</li>
</ul>
Waar:
item = individueel item in de collectie
itemCollection = De array die u doorloopt
ng-herhaal een object
<ul>
<li ng-repeat="(key, value) in myObject">
{{key}} : {{value}}
</li>
</ul>
Waar:
key = de eigenschapsnaam
waarde = de waarde van het onroerend goed
myObject = het object dat u herhaalt
filter uw ng-repeat op gebruikersinvoer
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText">
{{string}}
</li>
</ul>
Waar:
searchText = de tekst waarop de gebruiker de lijst wil filteren
stringArray = een array van strings, bijvoorbeeld ['string', 'array']
U kunt de gefilterde items ook elders weergeven of as aliasName
door de filteruitvoer een alias toe te wijzen as aliasName
, zoals hier:
<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 en ng-repeat-end
Om meerdere DOM-elementen te herhalen door een begin- en eindpunt te definiëren, kunt u de richtlijnen ng-repeat-start
en 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>
Output:
- 1
- 2
- 3
- 4
Het is belangrijk om ng-repeat-start
altijd te sluiten met ng-repeat-end
.
Variabelen
ng-repeat
deze variabelen ook in de uitdrukking weergegeven
veranderlijk | Type | Details |
---|---|---|
$index | Aantal | Is gelijk aan de index van de huidige iteratie ($ index === 0 wordt geëvalueerd naar true bij het eerste iteratie-element; zie $first ) |
$first | Boolean | Evalueert naar waar bij het eerste iteratie-element |
$last | Boolean | Evalueert naar waar bij het laatst herhaalde element |
$middle | Boolean | Evalueert naar waar als het element tussen $first en $last |
$even | Boolean | Evalueert naar true bij een even genummerde iteratie (gelijk aan $index%2===0 ) |
$odd | Boolean | Evalueert naar waar bij een oneven genummerde iteratie (gelijk aan $index%2===1 ) |
Prestatieoverwegingen
Rendering ngRepeat
kan langzaam worden, vooral bij het gebruik van grote collecties.
Als de objecten in de collectie hebben een identificatie eigenschap, moet u altijd track by
de identifier in plaats van het hele object, dat is de standaard functionaliteit. Als er geen ID aanwezig is, kunt u altijd de ingebouwde $index
.
<div ng-repeat="item in itemCollection track by item.id">
<div ng-repeat="item in itemCollection track by $index">
Reikwijdte van ng Herhaling
ngRepeat
maakt altijd een geïsoleerd ngRepeat
, dus wees voorzichtig als het ngRepeat
binnen de herhaling moet worden gebruikt.
Hier is een eenvoudig voorbeeld dat laat zien hoe u een waarde in uw bovenliggende scope kunt instellen via een ngRepeat
binnen 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'
}];
Als er alleen val = item.value
bij ng-click
, wordt de val
in het bovenliggende bereik niet bijgewerkt vanwege het geïsoleerde bereik. Dat is waarom de bovenliggende scope toegankelijk is met $parent
referentie of met de syntaxis van de controllerAs
(bijv. ng-controller="mainController as ctrl"
).
Geneste ng-herhaling
U kunt ook geneste ng-herhaling gebruiken.
<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']
];
});
Om toegang te krijgen tot de index van bovenliggende ng-repeat in onderliggende ng-repeat, kunt u $parent.$index
.
ngToon en ngVerbergen
De ng-show
instructie toont of verbergt het HTML-element op basis van of de expressie die eraan is doorgegeven waar of onwaar is. Als de waarde van de uitdrukking vals is, wordt deze verborgen. Als het waar is, zal het blijken.
De richtlijn ng-hide
is vergelijkbaar. Als de waarde echter vals is, wordt het HTML-element weergegeven. Wanneer de uitdrukking waarheidsgetrouw is, zal deze deze verbergen.
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';
}
Visie
<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
is een richtlijn die het maken van een html-vervolgkeuzelijst vereenvoudigt voor de selectie van een item uit een array die in een model wordt opgeslagen. Het attribuut ngOptions wordt gebruikt om dynamisch een lijst met <option>
-elementen voor het element <select>
te genereren met behulp van de array of het object dat is verkregen door de ngOptions-begripsexpressie te evalueren.
Met ng-options
de markup worden gereduceerd tot slechts een select-tag en de richtlijn maakt dezelfde select:
<select ng-model="selectedFruitNgOptions"
ng-options="curFruit as curFruit.label for curFruit in fruit">
</select>
Er is een andere manier om select
opties te maken met ng-repeat
, maar het wordt afgeraden om ng-repeat
omdat het meestal wordt gebruikt voor algemene doeleinden, zoals de forEach
to-loop. Terwijl ng-options
specifiek is voor het maken van select
tag-opties.
Bovenstaand voorbeeld zou het gebruik van ng-repeat
zijn
<select ng-model="selectedFruit">
<option ng-repeat="curFruit in fruit" value="{{curFruit}}">
{{curFruit.label}}
</option>
</select>
Laten we het bovenstaande voorbeeld in detail bekijken, ook met enkele variaties erin.
Gegevensmodel voor het voorbeeld:
$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>
Optietag gegenereerd bij selectie:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Effecten:
f.label
is het label van de <option>
en de waarde bevat het hele object.
<!-- select as label for value in array -->
<select ng-options="f.value as f.label for f in fruit" ng-model="selectedFruit"></select>
Optietag gegenereerd bij selectie:
<option value="4"> Apples </option>
Effecten:
f.value
(4) is in dit geval de waarde terwijl het label nog steeds hetzelfde is.
<!-- 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>
Optietag gegenereerd bij selectie:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Effecten:
Opties worden gegroepeerd op basis van hun value
. Opties met dezelfde value
vallen onder één categorie
<!-- 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>
Optietag gegenereerd bij selectie:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Effecten:
"Appels" en "Limoenen" zullen worden uitgeschakeld (niet in staat om te selecteren) vanwege de disable when f.value==4
. Alle opties met value=4
worden uitgeschakeld
<!-- 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>
Optietag gegenereerd bij selectie:
<option value="4"> Apples </option>
Effecten:
Er is geen visuele verandering bij gebruik van trackBy
, maar Angular zal veranderingen detecteren aan de hand van het id
plaats van door verwijzing, wat meestal een betere oplossing is.
<!-- 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>
Optietag gegenereerd bij selectie:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Effecten:
orderBy
is een AngularJS-standaardfilter die opties in oplopende volgorde rangschikt (standaard), zodat "Sinaasappels" hierin 1e wordt weergegeven, omdat de id
= 1.
Aan alle <select>
met ng-options
moet het ng-model
gekoppeld.
ngModel
Met ng-model kunt u een variabele binden aan elk type invoerveld. U kunt de variabele weergeven met dubbele accolades, bijvoorbeeld {{myAge}}
.
<input type="text" ng-model="myName">
<p>{{myName}}</p>
Terwijl u het invoerveld typt of op enigerlei wijze wijzigt, ziet u de waarde direct in de alinea-update.
De variabele ng-model is in dit geval beschikbaar in uw controller als $scope.myName
. Als u de syntaxis van de controllerAs
:
<div ng-controller="myCtrl as mc">
<input type="text" ng-model="mc.myName">
<p>{{mc.myName}}</p>
</div>
U moet verwijzen naar het bereik van de controller door de alias van de controller die is gedefinieerd in het kenmerk ng-controller vooraf te laten aan de variabele ng-model. Op deze manier hoeft u $scope
in uw controller te injecteren om naar uw variabele ng-model te verwijzen, de variabele zal beschikbaar zijn als this.myName
in de functie van uw controller.
ngClass
Laten we aannemen dat u de status van een gebruiker moet weergeven en dat u verschillende mogelijke CSS-klassen hebt die kunnen worden gebruikt. Angular maakt het heel eenvoudig om te kiezen uit een lijst met verschillende mogelijke klassen waarmee u een objectlijst kunt opgeven met voorwaardelijke items. Angular is in staat om de juiste klasse te gebruiken op basis van de waarheid van de conditionals.
Uw object moet sleutel / waarde-paren bevatten. De sleutel is een klassenaam die wordt toegepast wanneer de waarde (voorwaardelijk) wordt geëvalueerd als waar.
<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 controleert het object $scope.user
om de active
status en het level
nummer te zien. Afhankelijk van de waarden in die variabelen past Angular de overeenkomende stijl toe op de <span>
.
ngIf
ng-if
is een richtlijn vergelijkbaar met ng-show
maar voegt het element in het DOM in of verwijdert het in plaats van het eenvoudigweg te verbergen. Angular 1.1.5 introduceerde ng-If-richtlijn. U kunt de ng-if-richtlijn gebruiken boven versies van 1.1.5. Dit is handig omdat Angular geen digests verwerkt voor elementen binnen een verwijderde ng-if
de werklast van Angular wordt verminderd, met name voor complexe gegevensbindingen.
In tegenstelling tot ng-show
creëert de ng-if
richtlijn een onderliggende scope die gebruik maakt van prototypische overerving. Dit betekent dat het instellen van een primitieve waarde op de onderliggende scope niet van toepassing is op de ouder. Als u een primitief op het bovenliggende bereik wilt instellen, moet de eigenschap $parent
op het onderliggende bereik worden gebruikt.
JavaScript
angular.module('MyApp', []);
angular.module('MyApp').controller('myController', ['$scope', '$window', function myController($scope, $window) {
$scope.currentUser= $window.localStorage.getItem('userName');
}]);
Visie
<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 Als currentUser
is niet currentUser
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<!-- ng-if: !currentUser -->
</div>
DOM Als currentUser
is niet gedefinieerd
<div ng-controller="myController">
<!-- ng-if: currentUser -->
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
Functiebelofte
De ngIf-richtlijn accepteert ook functies, die logischerwijs vereisen dat true of false wordt geretourneerd.
<div ng-if="myFunction()">
<span>Span text</span>
</div>
De spantekst wordt alleen weergegeven als de functie true retourneert.
$scope.myFunction = function() {
var result = false;
// Code to determine the boolean value of result
return result;
};
Zoals elke hoekuitdrukking accepteert de functie alle soorten variabelen.
ngMouseenter en ngMouseleave
De richtlijnen ng-mouseenter
en ng-mouseleave
zijn nuttig om gebeurtenissen uit te voeren en CSS-stijl toe te passen wanneer u in of uit uw DOM-elementen ng-mouseleave
.
De ng-mouseenter
instructie voert een expressie uit als een muis ng-mouseenter
(wanneer de gebruiker zijn muisaanwijzer boven het DOM-element plaatst, bevindt deze richtlijn zich in)
HTML
<div ng-mouseenter="applyStyle = true" ng-class="{'active': applyStyle}">
In het bovenstaande voorbeeld, wanneer de gebruiker zijn muis op de div
applyStyle
, wordt applyStyle
omgezet in true
, wat op zijn beurt de .active
CSS-klasse toepast op de ng-class
.
De ng-mouseleave
instructie voert een expressie uit als een ng-mouseleave
(wanneer de gebruiker zijn muiscursor ng-mouseleave
van het DOM-element waarin deze richtlijn zich bevindt)
HTML
<div ng-mouseenter="applyStyle = true" ng-mouseleaver="applyStyle = false" ng-class="{'active': applyStyle}">
.active
het eerste voorbeeld, nu wanneer de gebruiker hem de muisaanwijzer van de div .active
, wordt de .active
klasse verwijderd.
ngDisabled
Deze richtlijn is nuttig om invoergebeurtenissen te beperken op basis van bepaalde bestaande omstandigheden.
De ng-disabled
richtlijn accepteert en uitdrukking die moet evalueren naar een waarheidsgetrouwe of een valse waarde.
ng-disabled
wordt gebruikt om het disabled
kenmerk voorwaardelijk toe te passen op een input
.
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
wordt geëvalueerd als true als de lengte van de input
0 is, waardoor de knop wordt uitgeschakeld, waardoor de gebruiker de klikgebeurtenis van ng-click
ngDblclick
De ng-dblclick
instructie is handig wanneer u een dubbelklikgebeurtenis aan uw DOM-elementen wilt binden.
Deze richtlijn aanvaardt een uitdrukking
HTML
<input type="number" ng-model="num = num + 1" ng-init="num=0">
<button ng-dblclick="num++">Double click me</button>
In het bovenstaande voorbeeld wordt de waarde die bij de input
wordt vastgehouden verhoogd wanneer er dubbel op de knop wordt geklikt.
Ingebouwde richtlijnen Cheatsheet
ng-app
Stelt het AngularJS-gedeelte in.
ng-init
Stelt een standaard variabele waarde in.
ng-bind
Alternatief voor {{}} sjabloon.
ng-bind-template
Bindt meerdere expressies aan de weergave.
ng-non-bindable
dat de gegevens niet bindend zijn.
ng-bind-html
Bindt de interne HTML-eigenschap van een HTML-element.
ng-change
Evalueert de opgegeven uitdrukking wanneer de gebruiker de invoer wijzigt.
ng-checked
Zet het selectievakje aan.
ng-class
Stelt de css-klasse dynamisch in.
ng-cloak
Voorkomt dat de inhoud wordt weergegeven totdat AngularJS de controle heeft overgenomen.
ng-click
Voert een methode of uitdrukking uit wanneer op het element wordt geklikt.
ng-controller
Voegt een controllerklasse toe aan de weergave.
ng-disabled
Bepaalt de eigenschap van het formulierelement
ng-form
Stelt een formulier in
ng-href
Bind AngularJS-variabelen dynamisch aan het href-kenmerk.
ng-include
Wordt gebruikt om een extern HTML-fragment op te halen, te compileren en op te nemen in uw pagina.
ng-if
Een element in de DOM verwijderen of opnieuw maken, afhankelijk van een expressie
ng-switch
voorwaardelijk besturingselement op basis van overeenkomende expressie.
ng-model
Bindt een invoer-, selectie-, tekstgebied enz. elementen met modeleigenschap.
ng-readonly
Gebruikt om het readonly-kenmerk voor een element in te stellen.
ng-repeat
Wordt gebruikt om elk item in een verzameling te doorlopen om een nieuwe sjabloon te maken.
ng-selected
Gebruikt om de geselecteerde optie in het element in te stellen.
ng-show/ng-hide
Elementen tonen / verbergen op basis van een uitdrukking.
ng-src
AngularJS-variabelen dynamisch binden aan het src-kenmerk.
ng-submit
Bind hoekige uitdrukkingen aan onsubmit evenementen.
ng-value
Bind hoekige uitdrukkingen aan de waarde van.
ng-required
Bind hoekige uitdrukkingen om gebeurtenissen in te dienen.
ng-style
Stelt CSS-stijl in op een HTML-element.
ng-pattern
Voegt de patroonvalidator toe aan ngModel.
ng-maxlength
Voegt de maxlength-validator toe aan ngModel.
ng-minlength
Voegt de minlength-validator toe aan ngModel.
ng-classeven
Werkt in combinatie met ngRepeat en wordt alleen van kracht op oneven (even) rijen.
ng-classodd
Werkt in combinatie met ngRepeat en wordt alleen van kracht op oneven (even) rijen.
ng-cut
Wordt gebruikt om aangepast gedrag op te geven voor de cut-gebeurtenis.
ng-copy
Wordt gebruikt om aangepast gedrag op te geven bij copy-gebeurtenis.
ng-paste
Wordt gebruikt om aangepast gedrag op te geven voor de paste-gebeurtenis.
ng-options
Wordt gebruikt om dynamisch een lijst met elementen voor het element te genereren.
ng-list
Wordt gebruikt om een tekenreeks om te zetten in een lijst op basis van het opgegeven scheidingsteken.
ng-open
Gebruikt om het open attribuut op het element in te stellen, als de uitdrukking in ngOpen waar is.
ngClick
De ng-click
instructie voegt een click-gebeurtenis toe aan een DOM-element.
Met de ng-click
instructie kunt u aangepast gedrag opgeven wanneer op een element van DOM wordt geklikt.
Dit is handig wanneer u klikgebeurtenissen aan knoppen wilt toevoegen en deze op uw controller wilt verwerken.
Deze richtlijn accepteert een uitdrukking waarbij het evenementenobject beschikbaar is als $event
HTML
<input ng-click="onClick($event)">Click me</input>
controleur
.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>
controleur
...
$scope.count = function(){
$scope.count = $scope.count + 1;
}
...
Wanneer op de knop wordt geklikt, wordt door een aanroep van de functie onClick
"Hello click event" afgedrukt, gevolgd door het gebeurtenisobject.
ngRequired
Het ng-required
voegt het required
validatiekenmerk toe aan of verwijdert het van een element, dat op zijn beurt de require
validatiesleutel voor de input
in- en uitschakelt.
Het wordt gebruikt om optioneel te definiëren of een input
een niet-lege waarde moet hebben. De richtlijn is nuttig bij het ontwerpen van validatie op complexe HTML-formulieren.
HTML
<input type="checkbox" ng-model="someBooleanValue">
<input type="text" ng-model="username" ng-required="someBooleanValue">
ng-model-opties
ng-model-options
kunt u het standaardgedrag van ng-model
. Met deze richtlijn kunnen gebeurtenissen worden geregistreerd die worden geactiveerd wanneer het ng-model wordt bijgewerkt en een debounce-effect toevoegen.
Deze richtlijn accepteert een uitdrukking die zal evalueren naar een definitieobject of een verwijzing naar een bereikwaarde.
Voorbeeld:
<input type="text" ng-model="myValue" ng-model-options="{'debounce': 500}">
In het bovenstaande voorbeeld wordt een debounce-effect van 500 milliseconden op myValue
, waardoor het model 500 ms bijwerkt nadat de gebruiker de input
(dat wil zeggen wanneer de myValue
klaar was met bijwerken).
Beschikbare objecteigenschappen
updateOn
: geeft aan welke gebeurtenis aan de invoer moet worden gebondenng-model-options="{ updateOn: 'blur'}" // will update on blur
debounce
: geeft een vertraging van enkele milliseconden op voor de modelupdateng-model-options="{'debounce': 500}" // will update the model after 1/2 second
allowInvalid
: een booleaanse vlag die een ongeldige waarde voor het model toestaat en standaardformuliervalidatie omzeilt, deze waarden worden standaard alsundefined
behandeld.getterSetter
: een booleaanse vlag die aangeeft of hetng-model
moet worden behandeld als een getter / setter-functie in plaats van een gewonegetterSetter
. De functie wordt dan uitgevoerd en retourneert de modelwaarde.Voorbeeld:
<input type="text" ng-model="myFunc" ng-model-options="{'getterSetter': true}"> $scope.myFunc = function() {return "value";}
timezone
: definieert de tijdzone voor het model als de invoer dedate
oftime
. types
ngCloak
De
ngCloak
richtlijn wordt gebruikt om te voorkomen dat de Angular html-sjabloon kort door de browser wordt weergegeven in zijn onbewerkte (ongecompileerde) vorm terwijl uw toepassing wordt geladen. - Bekijk bron
HTML
<div ng-cloak>
<h1>Hello {{ name }}</h1>
</div>
ngCloak
kan worden toegepast op het body-element, maar het voorkeurstoepassing is om meerdere ngCloak-richtlijnen toe te passen op kleine delen van de pagina om een progressieve weergave van de browserweergave mogelijk te maken.
De ngCloak
richtlijn heeft geen parameters.
Zie ook: Flikkeren voorkomen
ngInclude
Met ng-include kunt u de besturing van een deel van de pagina delegeren aan een specifieke controller. Misschien wilt u dit doen omdat de complexiteit van die component zodanig wordt dat u alle logica in een speciale controller wilt inkapselen.
Een voorbeeld is:
<div ng-include
src="'/gridview'"
ng-controller='gridController as gc'>
</div>
Merk op dat de /gridview
door de webserver moet worden bediend als een afzonderlijke en legitieme url.
Merk ook op dat het src
-attribuut een uitdrukking Angular accepteert. Dit kan bijvoorbeeld een variabele of een functieaanroep zijn of, zoals in dit voorbeeld, een stringconstante. In dit geval moet u ervoor zorgen dat u de bron-URL tussen enkele aanhalingstekens plaatst , zodat deze wordt geëvalueerd als een tekenreeksconstante. Dit is een veel voorkomende bron van verwarring.
Binnen de /gridview
html kunt u naar de gridController
verwijzen alsof deze rond de pagina is gewikkeld, bijvoorbeeld:
<div class="row">
<button type="button" class="btn btn-default" ng-click="gc.doSomething()"></button>
</div>
ngSrc
Het gebruik van Angular markup zoals {{hash}}
in een src-attribuut werkt niet goed. De browser haalt de URL op met de letterlijke tekst {{hash}}
totdat Angular de uitdrukking in {{hash}}
vervangt. ng-src
richtlijn vervangt het oorspronkelijke src
kenmerk voor het afbeeldingscode-element en lost het probleem op
<div ng-init="pic = 'pic_angular.jpg'">
<h1>Angular</h1>
<img ng-src="{{pic}}">
</div>
ngPattern
De ng-pattern
accepteert een uitdrukking die resulteert in een regulier uitdrukkingspatroon en gebruikt dat patroon om een tekstinvoer te valideren.
Voorbeeld:
Laten we zeggen dat we willen dat een <input>
-element geldig wordt wanneer de waarde (ng-model) een geldig IP-adres is.
Sjabloon:
<input type="text" ng-model="ipAddr" ng-pattern="ipRegex" name="ip" required>
controller:
$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
Meestal gebruikt onder ng-repeat
ngValue is handig bij het dynamisch genereren van lijsten met keuzerondjes met ngRepeat
<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
De ngCopy
richtlijn geeft het gedrag aan dat moet worden uitgevoerd bij een ngCopy
.
Voorkom dat een gebruiker gegevens kopieert
<p ng-copy="blockCopy($event)">This paragraph cannot be copied</p>
In de controller
$scope.blockCopy = function(event) {
event.preventDefault();
console.log("Copying won't work");
}
ngPaste
De ngPaste
richtlijn geeft aangepast gedrag aan dat moet worden uitgevoerd wanneer een gebruiker inhoud plakt
<input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
pasted: {{paste}}
ngHref
ngHref wordt gebruikt in plaats van het kenmerk href, als we een hoekuitdrukking binnen de href-waarde hebben. De ngHref-richtlijn vervangt het oorspronkelijke href-kenmerk van een html-tag met behulp van het href-kenmerk zoals tag, tag etc.
De ngHref-richtlijn zorgt ervoor dat de link niet wordt verbroken, zelfs als de gebruiker op de link klikt voordat AngularJS de code heeft geëvalueerd.
voorbeeld 1
<div ng-init="linkValue = 'http://stackoverflow.com'">
<p>Go to <a ng-href="{{linkValue}}">{{linkValue}}</a>!</p>
</div>
Voorbeeld 2 Dit voorbeeld haalt dynamisch de href-waarde uit het invoervak en laadt deze als href-waarde.
<input ng-model="value" />
<a id="link" ng-href="{{value}}">link</a>
Voorbeeld 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
De ng-list
instructie wordt gebruikt om een gescheiden tekenreeks om te zetten van een tekstinvoer naar een reeks tekenreeksen of vice versa.
De ng-list
richtlijn gebruikt een standaardscheidingsteken van ", "
(komma).
U kunt het scheidingsteken handmatig instellen door ng-list
een delimeter toe te wijzen zoals deze ng-list="; "
.
In dit geval wordt het scheidingsteken ingesteld op een puntkomma gevolgd door een spatie.
Standaard heeft ng-list
een attribuut ng-trim
dat is ingesteld op true. ng-trim
wanneer false, respecteert de witte ruimte in uw scheidingsteken. Standaard houdt ng-list
geen rekening met witruimte tenzij u ng-trim="false"
.
Voorbeeld:
angular.module('test', [])
.controller('ngListExample', ['$scope', function($scope) {
$scope.list = ['angular', 'is', 'cool!'];
}]);
Een klantscheidingsteken is ingesteld ;
. En het model van het invoervak is ingesteld op de array die in de scope is gemaakt.
<body ng-app="test" ng-controller="ngListExample">
<input ng-model="list" ng-list="; " ng-trim="false">
</body>
Het invoervak wordt weergegeven met de inhoud: angular; is; cool!