AngularJS
Inbyggda direktiv
Sök…
Vinkliga uttryck - Text kontra antal
Detta exempel visar hur vinkla uttryck utvärderas när du använder type="text"
och type="number"
för inmatningselementet. Tänk på följande controller och visa:
Kontrollant
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.textInput = {
value: '5'
};
$scope.numberInput = {
value: 5
};
});
Se
<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>
- Vid användning
+
i ett uttryck bundet till textinmatning kommer operatören sammanfoga strängarna (första exempel), som visar 55 på skärmen*
. - Vid användning
+
i ett uttryck bunden till nummer ingång, operatören returnera summan av talen (andra exempel), som visar 10 på skärmen*
.
*
- Det är tills användaren ändrar värdet i inmatningsfältet, därefter kommer displayen att ändras i enlighet därmed.
ngRepeat
ng-repeat
är ett inbyggt direktiv i Angular som låter dig iterera en matris eller ett objekt och ger dig möjligheten att upprepa ett element en gång för varje objekt i samlingen.
ng-upprepa en matris
<ul>
<li ng-repeat="item in itemCollection">
{{item.Name}}
</li>
</ul>
Var:
artikel = enskild artikel i samlingen
itemCollection = Matrisen du iterera
ng-upprepa ett objekt
<ul>
<li ng-repeat="(key, value) in myObject">
{{key}} : {{value}}
</li>
</ul>
Var:
nyckel = egendomsnamnet
värde = fastighetens värde
myObject = objektet du itererar
filtrera din ng-repetera efter användarinmatning
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText">
{{string}}
</li>
</ul>
Var:
searchText = texten som användaren vill filtrera listan efter
stringArray = en rad strängar, t.ex. ['string', 'array']
Du kan också visa eller hänvisa till de filtrerade artiklarna någon annanstans genom att tilldela filterutdata ett alias med as aliasName
, så:
<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-repetera-start och ng-repetera-slut
För att upprepa flera DOM-element genom att definiera en start och en slutpunkt kan du använda ng-repeat-start
och ng-repeat-end
riktlinjerna.
<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>
Produktion:
- 1
- 2
- 3
- 4
Det är viktigt att alltid stänga ng-repeat-start
med ng-repeat-end
.
variabler
ng-repeat
exponerar också dessa variabler i uttrycket
Variabel | Typ | detaljer |
---|---|---|
$index | siffra | Lika med indexet för den aktuella iterationen ($ index === 0 kommer att utvärderas till true vid det första itererade elementet; se $first ) |
$first | Boolean | Utvärderar till sant vid det första itererade elementet |
$last | Boolean | Utvärderar till sant vid det sista itererade elementet |
$middle | Boolean | Utvärderar till true om elementet är mellan $first och $last |
$even | Boolean | Utvärderar till true vid en jämn iteration (motsvarande $index%2===0 ) |
$odd | Boolean | Utvärderar till true vid en udda numrerad iteration (motsvarande $index%2===1 ) |
Resultathänsyn
Återgivning av ngRepeat
kan bli långsam, särskilt när du använder stora samlingar.
Om objekten i samlingen har en identifierareegenskap, bör du alltid track by
identifieraren i stället för hela objektet, som är standardfunktionen. Om ingen identifierare finns kan du alltid använda det inbyggda $index
.
<div ng-repeat="item in itemCollection track by item.id">
<div ng-repeat="item in itemCollection track by $index">
Räckvidd för ngRepeat
ngRepeat
skapar alltid ett isolerat barnomfång så att man måste ta hand om föräldrarnas omfång måste nås inom repetitionen.
Här är ett enkelt exempel som visar hur du kan ställa in ett värde i din överordnade omfattning från en klickhändelse inuti 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'
}];
Om det bara fanns val = item.value
vid ng-click
kommer det inte att uppdatera val
i överordnade omfång på grund av det isolerade omfånget. Det är därför man får tillgång till överordnade räckvidd med $parent
eller med controllerAs
syntax (t.ex. ng-controller="mainController as ctrl"
).
Häckt ng-repetition
Du kan också använda kapslade ng-repetera.
<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']
];
});
Här för att få tillgång till indexet för förälder ng-repetition inuti barn ng-repetition kan du använda $parent.$index
.
ngShow och ngHide
Direktivet ng-show
visar eller döljer HTML-elementet baserat på om uttrycket som skickas till det är sant eller falskt. Om värdet på uttrycket är falskt kommer det att dölja. Om det är sant kommer det att visa.
Direktivet om ng-hide
är liknande. Men om värdet är falskt visar HTML-elementet. När uttrycket är sanningsenligt kommer det att dölja det.
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';
}
Se
<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
är ett direktiv som förenklar skapandet av en html-dropdown-ruta för val av ett objekt från en matris som kommer att lagras i en modell. NgOptions-attributet används för att dynamiskt generera en lista med <option>
-element för <select>
-elementet med hjälp av arrayen eller objektet som erhålls genom att utvärdera uttrycket ngOptions-förståelse.
Med ng-options
kan markeringen reduceras till bara en markering och direktivet skapar samma val:
<select ng-model="selectedFruitNgOptions"
ng-options="curFruit as curFruit.label for curFruit in fruit">
</select>
Det finns ett annat sätt att skapa select
alternativ med hjälp av ng-repeat
, men det rekommenderas inte att använda ng-repeat
eftersom det mest används för allmänna ändamål, till exempel forEach
bara slinga. Medan ng-options
är specifikt för att skapa select
taggalternativ.
Ovanstående exempel med ng-repeat
skulle vara
<select ng-model="selectedFruit">
<option ng-repeat="curFruit in fruit" value="{{curFruit}}">
{{curFruit.label}}
</option>
</select>
Låt oss se ovanstående exempel i detalj också med vissa variationer i det.
Datamodell för exemplet:
$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>
Alternativtagg genereras vid val:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
effekter:
f.label
kommer att vara etiketten för <option>
och värdet kommer att innehålla hela objektet.
<!-- select as label for value in array -->
<select ng-options="f.value as f.label for f in fruit" ng-model="selectedFruit"></select>
Alternativtagg genereras vid val:
<option value="4"> Apples </option>
effekter:
f.value
(4) är värdet i detta fall medan etiketten fortfarande är densamma.
<!-- 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>
Alternativtagg genereras vid val:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
effekter:
Alternativ kommer att grupperas baserat på value
. Alternativ med samma value
faller under en kategori
<!-- 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>
Alternativtagg genereras vid val:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
effekter:
"Äpplen" och "Limefrukter" kommer att inaktiveras (kan inte välja) på grund av att villkoret är disable when f.value==4
. Alla alternativ med value=4
ska vara inaktiverade
<!-- 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>
Alternativtagg genereras vid val:
<option value="4"> Apples </option>
effekter:
Det finns inte visuell förändring när du använder trackBy
, men Angular kommer att upptäcka förändringar med id
istället för med referens, vilket mest alltid är en bättre lösning.
<!-- 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>
Alternativtagg genereras vid val:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
effekter:
orderBy
är ett AngularJS-standardfilter som ordnar alternativ i stigande ordning (som standard) så att "Apelsiner" i detta kommer att visas 1: a sedan dess id
= 1.
Alla <select>
med ng-options
måste ha ng-model
bifogad.
ngModel
Med ng-modell kan du binda en variabel till alla typer av inmatningsfält. Du kan visa variabeln med dubbla lockiga hängslen, t.ex. {{myAge}}
.
<input type="text" ng-model="myName">
<p>{{myName}}</p>
När du skriver in inmatningsfältet eller ändrar det på något sätt ser du värdet i styckuppdateringen direkt.
Variabeln ng-modell, i det här fallet, kommer att finnas tillgänglig i din styrenhet som $scope.myName
. Om du använder controllerAs
syntax:
<div ng-controller="myCtrl as mc">
<input type="text" ng-model="mc.myName">
<p>{{mc.myName}}</p>
</div>
Du måste hänvisa till regulatorns omfattning genom att i förväg vänta på kontrollerns alias definierat i ng-controller-attributet till ng-modellvariabeln. På så sätt behöver du inte injicera $scope
i din controller för att referera till din ng-modellvariabel, variabeln kommer att finnas tillgänglig som this.myName
i din controller-funktion.
ngClass
Låt oss anta att du måste visa status för en användare och att du har flera möjliga CSS-klasser som kan användas. Angular gör det mycket enkelt att välja från en lista med flera möjliga klasser som låter dig specificera en objektlista som innehåller villkor. Angular har möjlighet att använda rätt klass baserat på sanningsenhetens kondition.
Ditt objekt ska innehålla nyckel- / värdepar. Nyckeln är ett klassnamn som kommer att tillämpas när värdet (villkorat) utvärderas till sant.
<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>
Vinkel kontrollerar $scope.user
objektet för att se active
status och level
Beroende på värdena i dessa variabler tillämpar Angular matchningsstilen på <span>
.
ngIf
ng-if
är ett direktiv som liknar ng-show
men infogar eller tar bort elementet från DOM istället för att helt enkelt gömma det. Angular 1.1.5 införde ng-If-direktivet. Du kan använda ng-if-direktivet ovan versionerna 1.1.5. Detta är användbart eftersom Angular inte kommer att bearbeta digests för element inuti en borttagen ng-if
arbetsbördan för Angular reduceras särskilt för komplexa databindningar.
Till skillnad från ng-show
skapar ng-if
direktivet ett barnomfång som använder prototypformad arv. Detta innebär att inställning av ett primitivt värde på barnets omfattning inte kommer att gälla föräldern. För att ställa in en primitiv på överordnade omfång måste $parent
på underordningsområdet användas.
JavaScript
angular.module('MyApp', []);
angular.module('MyApp').controller('myController', ['$scope', '$window', function myController($scope, $window) {
$scope.currentUser= $window.localStorage.getItem('userName');
}]);
Se
<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 Om den currentUser
är definierad
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<!-- ng-if: !currentUser -->
</div>
DOM Om den currentUser
är definierad
<div ng-controller="myController">
<!-- ng-if: currentUser -->
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
Funktionslöfte
Direktivet ngIf accepterar också funktioner som logiskt kräver att de ska returnera sant eller falskt.
<div ng-if="myFunction()">
<span>Span text</span>
</div>
Spanntexten visas bara om funktionen returnerar sanningen.
$scope.myFunction = function() {
var result = false;
// Code to determine the boolean value of result
return result;
};
Som valfritt uttryck accepterar funktionen alla typer av variabler.
ngMouseenter och ngMouseleave
ng-mouseenter
och ng-mouseleave
är användbara för att köra händelser och tillämpa CSS-styling när du håller muspekaren in eller ut ur dina DOM-element.
Direktivet om ng-mouseenter
kör ett uttryck som en musinmatningshändelse (när användaren anger sin muspekare över DOM-elementet finns detta direktiv i)
html
<div ng-mouseenter="applyStyle = true" ng-class="{'active': applyStyle}">
I exemplet ovan, när användaren pekar musen över div
, vänder applyStyle
till true
, vilket i sin tur tillämpar .active
CSS-klassen i ng-class
.
Direktivet ng-mouseleave
kör ett uttryck från en musutgångshändelse (när användaren tar bort musmarkören från DOM-elementet finns detta direktiv i)
html
<div ng-mouseenter="applyStyle = true" ng-mouseleaver="applyStyle = false" ng-class="{'active': applyStyle}">
Återanvända det första exemplet, nu när användaren tar honom muspekaren bort från div, .active
den .active
klassen bort.
ngDisabled
Detta direktiv är användbart för att begränsa inputhändelser baserat på vissa befintliga förhållanden.
Direktivet om ng-disabled
accepterar och uttrycker som borde utvärdera antingen sannings- eller falskvärden.
ng-disabled
används för att villkorligt tillämpa det disabled
attributet på ett 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
utvärderas till true om input
är 0, vilket är avaktiverar knappen, vilket låter användaren avfyra klickhändelsen för ng-click
ngDblclick
Direktivet ng-dblclick
är användbart när du vill binda en dubbelklickhändelse i dina DOM-element.
Detta direktiv accepterar ett uttryck
html
<input type="number" ng-model="num = num + 1" ng-init="num=0">
<button ng-dblclick="num++">Double click me</button>
I exemplet ovan ökas värdet vid input
när knappen dubbelklickas.
Inbyggda direktiv Cheat Sheet
ng-app
Ställer in avsnittet AngularJS.
ng-init
Ställer in ett standardvariabelt värde.
ng-bind
Alternativ till {{}} mall.
ng-bind-template
Binder flera uttryck till vyn.
ng-non-bindable
att uppgifterna inte är bindbara.
ng-bind-html
Binder inre HTML-egenskap hos ett HTML-element.
ng-change
Utvärderar angivet uttryck när användaren ändrar ingången.
ng-checked
Ställer in kryssrutan.
ng-class
Ställer in css-klassen dynamiskt.
ng-cloak
Förhindrar visning av innehållet tills AngularJS har tagit kontrollen.
ng-click
Kör en metod eller ett uttryck när elementet klickas.
ng-controller
Ansluter en controller-klass till vyn.
ng-disabled
Kontrollerar formelementets inaktiverade egenskap
ng-form
Ställer in ett formulär
ng-href
Dynamiskt binda AngularJS-variabler till href-attributet.
ng-include
Används för att hämta, sammanställa och inkludera ett externt HTML-fragment på din sida.
ng-if
Ta bort eller återskapa ett element i DOM beroende på ett uttryck
ng-switch
Villkorlig växelstyrning baserad på matchande uttryck.
ng-model
Binder en inmatnings-, markerings-, textartikel-element med modellegenskap.
ng-readonly
Används för att ställa in readonly attribut till ett element.
ng-repeat
Används för att gå igenom varje objekt i en samling för att skapa en ny mall.
ng-selected
Används för att ställa in valt alternativ i elementet.
ng-show/ng-hide
Visa / dölj element baserat på ett uttryck.
ng-src
dynamiskt AngularJS-variabler till src-attributet.
ng-submit
Bind vinkeluttryck för att skicka händelser.
ng-value
Bind vinkeluttryck till värdet på.
ng-required
Bind vinkeluttryck för att skicka in händelser.
ng-style
Ställer in CSS-stil på ett HTML-element.
ng-pattern
Lägger till mönstervalidator till ngModel.
ng-maxlength
Lägger till maxlength validator till ngModel.
ng-minlength
Lägger till minlength validator till ngModel.
ng-classeven
Fungerar tillsammans med ngRepeat och träder i kraft endast på udda (jämna) rader.
ng-classodd
Fungerar tillsammans med ngRepeat och träder i kraft endast på udda (jämna) rader.
ng-cut
Används för att specificera anpassat beteende på cut-händelse.
ng-copy
Används för att ange anpassat beteende vid kopieringshändelse.
ng-paste
Används för att ange anpassat beteende för klistra händelse.
ng-options
Används för att dynamiskt generera en lista över element för elementet.
ng-list
Används för att konvertera sträng till lista baserad på specificerad avgränsare.
ng-open
Används för att ställa in det öppna attributet för elementet, om uttrycket inuti ngOpen är sanningsenligt.
ngClick
Direktivet ng-click
fäster en klickhändelse till ett DOM-element.
Med ng-click
kan du ange anpassat beteende när du ng-click
ett element i DOM.
Det är användbart när du vill bifoga klickhändelser på knappar och hantera dem på din controller.
Detta direktiv accepterar ett uttryck med händelserobjektet tillgängligt som $event
html
<input ng-click="onClick($event)">Click me</input>
Kontrollant
.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>
Kontrollant
...
$scope.count = function(){
$scope.count = $scope.count + 1;
}
...
När du klickar på knappen kommer en anrop av onClick
funktionen att skriva ut "Hello click event" följt av händelseobjektet.
ngRequired
Den ng-required
lägger till eller tar bort den required
attributet validering på ett element, vilket i sin tur kommer att aktivera och inaktivera require
valideringsnyckeln för input
.
Det används för att valfritt definiera om ett input
ska ha ett icke-tomt värde. Direktivet är användbart vid utformning av validering på komplexa HTML-formulär.
html
<input type="checkbox" ng-model="someBooleanValue">
<input type="text" ng-model="username" ng-required="someBooleanValue">
ng-modell-options
ng-model-options
tillåter att ändra standardbeteendet för ng-model
, det här direktivet gör det möjligt att registrera händelser som kommer att avfyras när ng-modellen uppdateras och att fästa en avvisningseffekt.
Detta direktiv accepterar ett uttryck som utvärderar till ett definitionsobjekt eller en hänvisning till ett omfattningsvärde.
Exempel:
<input type="text" ng-model="myValue" ng-model-options="{'debounce': 500}">
Exemplet ovan kommer att bifoga en avvisningseffekt på 500 millisekunder på myValue
, vilket kommer att få modellen att uppdatera 500 ms efter att användaren har skrivit över input
(det vill säga när myValue
slutförde uppdateringen).
Tillgängliga objektegenskaper
updateOn
: anger vilken händelse som ska vara bunden till ingångenng-model-options="{ updateOn: 'blur'}" // will update on blur
debounce
: specificerar en fördröjning på något millisekund mot modelluppdateringenng-model-options="{'debounce': 500}" // will update the model after 1/2 second
allowInvalid
: en boolesk flagga som möjliggör ett ogiltigt värde för modellen, kringgå standardformulering, som standard kommer dessa värden att behandlas somundefined
.getterSetter
: en boolesk flagga som indikerar om man ska behandlang-model
som en getter / setter-funktion istället för ett vanligt modellvärde. Funktionen körs sedan och returnerar modellvärdet.Exempel:
<input type="text" ng-model="myFunc" ng-model-options="{'getterSetter': true}"> $scope.myFunc = function() {return "value";}
timezone
: definierar tidszonen för modellen om ingången hardate
ellertime
. typer
ngCloak
Direktivet
ngCloak
används för att förhindra att Angular html-mallen kort visas av webbläsaren i sin råa (okompilerade) form medan din applikation laddas. - Visa källa
html
<div ng-cloak>
<h1>Hello {{ name }}</h1>
</div>
ngCloak
kan tillämpas på kroppselementet, men den föredragna användningen är att tillämpa flera ngCloak-direktiv på små delar av sidan för att möjliggöra en progressiv återgivning av webbläsarvyen.
ngCloak
direktivet har inga parametrar.
Se även: Förhindra flimmer
ngInclude
ng-include låter dig delegera kontrollen av en del av sidan till en specifik controller. Du kanske vill göra detta eftersom komplexiteten hos den komponenten blir sådan att du vill kapsla all logik i en dedicerad styrenhet.
Ett exempel är:
<div ng-include
src="'/gridview'"
ng-controller='gridController as gc'>
</div>
Observera att /gridview
måste betjänas av webbservern som en tydlig och legitim url.
Observera också att src
attributet accepterar ett vinkeluttryck. Detta kan vara en variabel eller ett funktionssamtal till exempel eller, som i detta exempel, en strängkonstant. I det här fallet måste du se till att radera källadressen i enstaka citat , så att den utvärderas som en strängkonstant. Detta är en vanlig källa till förvirring.
Inom /gridview
html kan du hänvisa till gridController
som om den var lindad runt sidan, t.ex.:
<div class="row">
<button type="button" class="btn btn-default" ng-click="gc.doSomething()"></button>
</div>
ngSrc
Att använda vinkelmarkering som {{hash}}
i ett src-attribut fungerar inte korrekt. Webbläsaren hämtar från URL: en med bokstavlig text {{hash}}
tills Angular ersätter uttrycket inuti {{hash}}
. ng-src
direktiv åsidosätter det ursprungliga src
attributet för bildtaggelementet och löser problemet
<div ng-init="pic = 'pic_angular.jpg'">
<h1>Angular</h1>
<img ng-src="{{pic}}">
</div>
ngPattern
Direktivet om ng-pattern
accepterar ett uttryck som utvärderar till ett vanligt uttrycksmönster och använder det mönstret för att validera en textinmatning.
Exempel:
Låt oss säga att vi vill att ett <input>
-element ska bli giltigt när det är värdet (ng-modell) är en giltig IP-adress.
Mall:
<input type="text" ng-model="ipAddr" ng-pattern="ipRegex" name="ip" required>
Kontrollant:
$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
Det mest använda under ng-repeat
ngValue är användbart när du dynamiskt genererar listor med radioknappar med 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
Direktivet ngCopy
anger beteende som ska köras vid en kopieringshändelse.
Förhindra att en användare kopierar data
<p ng-copy="blockCopy($event)">This paragraph cannot be copied</p>
I regulatorn
$scope.blockCopy = function(event) {
event.preventDefault();
console.log("Copying won't work");
}
ngPaste
Direktivet ngPaste
anger anpassat beteende som ska köras när en användare klistrar in innehåll
<input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
pasted: {{paste}}
ngHref
ngHref används istället för href-attribut, om vi har en vinkeluttryck inuti href-värdet. Direktivet ngHref åsidosätter det ursprungliga href-attributet för en html-tagg med href-attribut som tag, tag etc.
Direktivet ngHref ser till att länken inte bryts även om användaren klickar på länken innan AngularJS har utvärderat koden.
Exempel 1
<div ng-init="linkValue = 'http://stackoverflow.com'">
<p>Go to <a ng-href="{{linkValue}}">{{linkValue}}</a>!</p>
</div>
Exempel 2 Detta exempel får dynamiskt href-värdet från inmatningsrutan och laddar det som href-värde.
<input ng-model="value" />
<a id="link" ng-href="{{value}}">link</a>
Exempel 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
Direktivet ng-list
används för att konvertera en avgränsad sträng från en textinmatning till en rad strängar eller vice versa.
Direktivet i ng-list
använder en standardavgränsare av ", "
(kommautrymme).
Du kan ställa in avgränsaren manuellt genom att tilldela ng-list
en avgränsare som denna ng-list="; "
.
I detta fall är avgränsaren inställd på en semikolon följt av ett mellanrum.
Som standard har ng-list
ett attribut ng-trim
som är satt till true. ng-trim
när falskt, kommer att respektera vitt utrymme i din avgränsare. Som standard tar inte ng-list
vitt utrymme om du inte anger ng-trim="false"
.
Exempel:
angular.module('test', [])
.controller('ngListExample', ['$scope', function($scope) {
$scope.list = ['angular', 'is', 'cool!'];
}]);
En kundavgränsare är inställd på att vara ;
. Och modellen för inmatningsrutan är inställd på den matris som skapades på omfattningen.
<body ng-app="test" ng-controller="ngListExample">
<input ng-model="list" ng-list="; " ng-trim="false">
</body>
Inmatningsrutan visas med innehållet: angular; is; cool!