AngularJS
Direttive incorporate
Ricerca…
Espressioni angolari - Testo contro numero
Questo esempio dimostra come vengono valutate le espressioni angolari quando si utilizza type="text" e type="number" per l'elemento di input. Si consideri il seguente controller e vista:
controllore
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.textInput = {
value: '5'
};
$scope.numberInput = {
value: 5
};
});
vista
<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>
- Quando si utilizza
+in un'espressione associata all'input di testo , l'operatore concatenerà le stringhe (primo esempio), visualizzando 55 sullo schermo*. - Quando si utilizza
+in un'espressione associata all'input del numero , l'operatore restituisce la somma dei numeri (secondo esempio), visualizzando 10 sullo schermo*.
* - Fino a quando l'utente non modifica il valore nel campo di immissione, in seguito il display cambierà di conseguenza.
ngRepeat
ng-repeat è una direttiva incorporata in Angular che ti permette di iterare una matrice o un oggetto e ti dà la possibilità di ripetere un elemento una volta per ogni oggetto della collezione.
ng-ripeti un array
<ul>
<li ng-repeat="item in itemCollection">
{{item.Name}}
</li>
</ul>
Dove:
item = singolo oggetto nella collezione
itemCollection = La matrice che stai iterando
ng-ripeti un oggetto
<ul>
<li ng-repeat="(key, value) in myObject">
{{key}} : {{value}}
</li>
</ul>
Dove:
chiave = il nome della proprietà
valore = il valore della proprietà
myObject = l'oggetto che stai iterando
filtra la tua ng-ripetizione per input dell'utente
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText">
{{string}}
</li>
</ul>
Dove:
searchText = il testo che l'utente vuole filtrare per la lista
stringArray = una serie di stringhe, ad esempio ['string', 'array']
Puoi anche visualizzare o riferire gli elementi filtrati altrove assegnando al filtro un alias di output con as aliasName , in questo modo:
<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 e ng-repeat-end
Per ripetere più elementi DOM definendo un punto iniziale e uno finale è possibile utilizzare le direttive ng-repeat-start e 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>
Produzione:
- 1
- 2
- 3
- 4
È importante chiudere sempre ng-repeat-start con ng-repeat-end .
variabili
ng-repeat espone anche queste variabili all'interno dell'espressione
| Variabile | genere | Dettagli |
|---|---|---|
$index | Numero | Uguale all'indice dell'attuale iterazione ($ index === 0 valuterà in vero al primo elemento iterato, vedi $first ) |
$first | booleano | Valuta true al primo elemento iterato |
$last | booleano | Valuta true all'ultimo elemento iterato |
$middle | booleano | Valuta true se l'elemento è compreso tra $first e $last |
$even | booleano | Valuta true in un'iterazione pari (equivalente a $index%2===0 ) |
$odd | booleano | Valuta true in un'iterazione dispari numerata (equivalente a $index%2===1 ) |
Considerazioni sulle prestazioni
Il rendering di ngRepeat può rallentare, specialmente quando si utilizzano raccolte di grandi dimensioni.
Se gli oggetti nella raccolta hanno una proprietà identificatore, è sempre necessario track by dell'identificatore anziché dell'intero oggetto, che è la funzionalità predefinita. Se non è presente alcun identificativo, è sempre possibile utilizzare l' $index incorporato.
<div ng-repeat="item in itemCollection track by item.id">
<div ng-repeat="item in itemCollection track by $index">
Scopo di ngRepeat
ngRepeat creerà sempre un ambito figlio isolato, quindi è necessario prestare attenzione se è necessario accedere all'ambito principale all'interno della ripetizione.
Ecco un semplice esempio che mostra come è possibile impostare un valore nello scope genitore da un evento click all'interno di 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'
}];
Se era presente solo val = item.value in ng-click , non aggiornerà la val nell'ambito genitore a causa dell'ambito isolato. Ecco perché l'ambito genitore è accessibile con riferimento $parent o con la sintassi controllerAs (ad es. ng-controller="mainController as ctrl" ).
Ng-ripetizione annidata
Puoi anche usare ng-repeat annidato.
<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']
];
});
Qui per accedere all'indice di parent ng-repeat all'interno di child ng-repeat, puoi usare $parent.$index .
ngShow and ngHide
La direttiva ng-show mostra o nasconde l'elemento HTML in base a se l'espressione passata è vera o falsa. Se il valore dell'espressione è falsy allora si nasconderà. Se è vero, allora mostrerà.
La direttiva ng-hide è simile. Tuttavia, se il valore è falsy, mostrerà l'elemento HTML. Quando l'espressione è veritiera, la nasconderà.
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';
}
vista
<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 è una direttiva che semplifica la creazione di una casella a discesa html per la selezione di un elemento da una matrice che verrà memorizzata in un modello. L'attributo ngOptions viene utilizzato per generare dinamicamente un elenco di elementi <option> per l'elemento <select> utilizzando l'array o l'oggetto ottenuto valutando l'espressione di comprensione ngOptions.
Con ng-options il markup può essere ridotto a un solo tag select e la direttiva creerà la stessa selezione:
<select ng-model="selectedFruitNgOptions"
ng-options="curFruit as curFruit.label for curFruit in fruit">
</select>
C'è un altro modo per creare opzioni di select usando ng-repeat , ma non è consigliabile usare ng-repeat dato che è usato principalmente per scopi generali come, per forEach solo loop. Mentre ng-options è specifico per la creazione di opzioni di tag select .
Sopra l'esempio usando ng-repeat sarebbe
<select ng-model="selectedFruit">
<option ng-repeat="curFruit in fruit" value="{{curFruit}}">
{{curFruit.label}}
</option>
</select>
Vediamo l'esempio sopra in dettaglio anche con alcune variazioni in esso.
Modello dati per l'esempio:
$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>
Tag di opzione generato alla selezione:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
effetti:
f.label sarà l'etichetta di <option> e il valore conterrà l'intero oggetto.
<!-- select as label for value in array -->
<select ng-options="f.value as f.label for f in fruit" ng-model="selectedFruit"></select>
Tag di opzione generato alla selezione:
<option value="4"> Apples </option>
effetti:
f.value (4) sarà il valore in questo caso mentre l'etichetta è sempre la stessa.
<!-- 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>
Tag di opzione generato alla selezione:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
effetti:
Le opzioni saranno raggruppate in base al loro value . Le opzioni con lo stesso value rientrano in una categoria
<!-- 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>
Tag di opzione generato alla selezione:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
effetti:
"Mele" e "Limes" saranno disabilitati (impossibile selezionare) a causa della condizione disable when f.value==4 . Tutte le opzioni con value=4 devono essere disabilitate
<!-- 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>
Tag di opzione generato alla selezione:
<option value="4"> Apples </option>
effetti:
Non v'è cambiamento visibile quando si usa trackBy , ma angolare rileverà cambiamenti nel id anziché di riferimento che è quasi sempre una soluzione migliore.
<!-- 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>
Tag di opzione generato alla selezione:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
effetti:
orderBy è un filtro standard AngularJS che organizza le opzioni in ordine crescente (per impostazione predefinita), quindi "Arance" in questo apparirà 1 dal suo id = 1.
Tutti i <select> con ng-options devono avere ng-model allegato.
ngModel
Con ng-model puoi associare una variabile a qualsiasi tipo di campo di input. È possibile visualizzare la variabile usando doppie parentesi graffe, ad esempio {{myAge}} .
<input type="text" ng-model="myName">
<p>{{myName}}</p>
Mentre digiti nel campo di input o lo cambi in qualunque modo vedrai istantaneamente il valore nel paragrafo update.
La variabile ng-model, in questo caso, sarà disponibile nel controller come $scope.myName . Se si utilizza la sintassi del controllerAs :
<div ng-controller="myCtrl as mc">
<input type="text" ng-model="mc.myName">
<p>{{mc.myName}}</p>
</div>
Sarà necessario fare riferimento allo scope del controller pre-in sospeso l'alias del controller definito nell'attributo ng-controller nella variabile ng-model. In questo modo non avrai bisogno di iniettare $scope nel tuo controller per fare riferimento alla tua variabile ng-model, la variabile sarà disponibile come this.myName all'interno della funzione del tuo controller.
ngClass
Supponiamo di dover mostrare lo stato di un utente e di avere diverse classi CSS che potrebbero essere utilizzate. Angular rende molto facile scegliere da un elenco di diverse classi possibili che consentono di specificare un elenco di oggetti che include condizionali. Angular è in grado di utilizzare la classe corretta in base alla verità dei condizionali.
Il tuo oggetto dovrebbe contenere coppie chiave / valore. La chiave è un nome di classe che verrà applicato quando il valore (condizionale) viene valutato su true.
<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 controllerà l'oggetto $scope.user per vedere lo stato active e il numero del level . A seconda dei valori in queste variabili, Angular applicherà lo stile di corrispondenza allo <span> .
ngIf
ng-if è una direttiva simile a ng-show ma inserisce o rimuove l'elemento dal DOM invece di semplicemente nasconderlo. Angular 1.1.5 ha introdotto la direttiva ng-If. È possibile utilizzare la direttiva ng-if sopra le versioni 1.1.5. Ciò è utile perché Angular non elaborerà i digest per gli elementi all'interno di una ng-if rimossa ng-if riducendo il carico di lavoro di Angular in particolare per i binding di dati complessi.
A differenza di ng-show , la direttiva ng-if crea un ambito figlio che utilizza l'ereditarietà prototipale. Ciò significa che l'impostazione di un valore primitivo sull'ambito figlio non si applica al genitore. Per impostare una primitiva sull'ambito $parent proprietà $parent sull'ambito figlio.
JavaScript
angular.module('MyApp', []);
angular.module('MyApp').controller('myController', ['$scope', '$window', function myController($scope, $window) {
$scope.currentUser= $window.localStorage.getItem('userName');
}]);
vista
<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 Se currentUser non è indefinito
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<!-- ng-if: !currentUser -->
</div>
DOM Se currentUser non è definito
<div ng-controller="myController">
<!-- ng-if: currentUser -->
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
Promessa della funzione
La direttiva ngIf accetta anche le funzioni, che richiedono logicamente di restituire true o false.
<div ng-if="myFunction()">
<span>Span text</span>
</div>
Il testo di span verrà visualizzato solo se la funzione restituisce true.
$scope.myFunction = function() {
var result = false;
// Code to determine the boolean value of result
return result;
};
Come qualsiasi espressione angolare, la funzione accetta qualsiasi tipo di variabile.
ngMouseenter e ngMouseleave
Le direttive ng-mouseenter e ng-mouseleave sono utili per eseguire gli eventi e applicare lo stile CSS quando si posiziona il cursore all'interno o all'esterno degli elementi DOM.
La direttiva ng-mouseenter esegue un'espressione quando un mouse entra in un evento (quando l'utente inserisce il puntatore del mouse sull'elemento DOM in cui risiede questa direttiva)
HTML
<div ng-mouseenter="applyStyle = true" ng-class="{'active': applyStyle}">
Nell'esempio sopra, quando l'utente punta il mouse sul div , applyStyle diventa true , che a sua volta applica la classe CSS .active alla classe ng-class .
La direttiva ng-mouseleave esegue un'espressione uno un evento di uscita del mouse (quando l'utente ng-mouseleave il cursore del mouse dall'elemento DOM in cui risiede questa direttiva)
HTML
<div ng-mouseenter="applyStyle = true" ng-mouseleaver="applyStyle = false" ng-class="{'active': applyStyle}">
Riutilizzando il primo esempio, ora quando l'utente si allontana dal puntatore del mouse dal div, la classe .active viene rimossa.
ngDisabled
Questa direttiva è utile per limitare gli eventi di input in base a determinate condizioni esistenti.
La direttiva ng-disabled accetta ed espressione che dovrebbe valutare valori veri o falsi.
ng-disabled è usato per applicare in modo condizionale l'attributo disabled su un elemento di 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 viene valutato come true se la lunghezza input è 0, che è disabilita il pulsante, impedendo all'utente di attivare l'evento click di ng-click
ngDblclick
La direttiva ng-dblclick è utile quando si desidera associare un evento di doppio clic agli elementi DOM.
Questa direttiva accetta un'espressione
HTML
<input type="number" ng-model="num = num + 1" ng-init="num=0">
<button ng-dblclick="num++">Double click me</button>
Nell'esempio sopra, il valore mantenuto input verrà incrementato quando si fa doppio clic sul pulsante.
Cheat Sheet delle direttive integrate
ng-app Imposta la sezione AngularJS.
ng-init Imposta un valore di variabile predefinito.
ng-bind Alternativa al modello {{}}.
ng-bind-template Lega più espressioni alla vista.
ng-non-bindable che i dati non sono associabili.
ng-bind-html Lega la proprietà HTML interna di un elemento HTML.
ng-change Valuta l'espressione specificata quando l'utente cambia l'input.
ng-checked Imposta la casella di controllo.
ng-class Imposta dinamicamente la classe css.
ng-cloak Impedisce la visualizzazione del contenuto finché AngularJS non ha preso il controllo.
ng-click Esegue un metodo o un'espressione quando si fa clic sull'elemento.
ng-controller Collega una classe controller alla vista.
ng-disabled Controlla la proprietà disabilitata dell'elemento del modulo
ng-form Imposta un modulo
ng-href Associa dinamicamente le variabili AngularJS all'attributo href.
ng-include Utilizzato per recuperare, compilare e includere un frammento HTML esterno nella tua pagina.
ng-if Rimuove o ricrea un elemento nel DOM a seconda di un'espressione
ng-switch Controlla in modo condizionale il controllo in base all'espressione corrispondente.
ng-model Lega un input, seleziona, textarea ecc. elementi con proprietà model.
ng-readonly Utilizzato per impostare un attributo readonly su un elemento.
ng-repeat Utilizzato per scorrere ogni elemento di una raccolta per creare un nuovo modello.
ng-selected Utilizzato per impostare l'opzione selezionata nell'elemento.
ng-show/ng-hide Mostra / nascondi gli elementi in base a un'espressione.
ng-src Associa dinamicamente le variabili AngularJS all'attributo src.
ng-submit Associa le espressioni angolari agli eventi onsubmit.
ng-value Associa le espressioni angolari al valore di.
ng-required Associa le espressioni angolari agli eventi onsubmit.
ng-style Imposta lo ng-style CSS su un elemento HTML.
ng-pattern Aggiunge il modello validatore a ngModel.
ng-maxlength Aggiunge il validatore maxlength a ngModel.
ng-minlength Aggiunge il validatore minlength a ngModel.
ng-classeven Funziona in combinazione con ngRepeat e ha effetto solo su righe dispari (pari).
ng-classodd Funziona in combinazione con ngRepeat e ha effetto solo su righe dispari (pari).
ng-cut Utilizzato per specificare il comportamento personalizzato sull'evento di taglio.
ng-copy Usato per specificare il comportamento personalizzato sull'evento di copia.
ng-paste Utilizzato per specificare il comportamento personalizzato sull'evento incolla.
ng-options Utilizzato per generare dinamicamente un elenco di elementi per l'elemento.
ng-list Utilizzato per convertire una stringa in lista in base al delimitatore specificato.
ng-open Usato per impostare l'attributo open sull'elemento, se l'espressione dentro ngOpen è true.
ngClick
La direttiva ng-click associa un evento click a un elemento DOM.
La direttiva ng-click consente di specificare il comportamento personalizzato quando si fa clic su un elemento di DOM.
È utile quando si desidera allegare eventi di clic sui pulsanti e gestirli sul controller.
Questa direttiva accetta un'espressione con l'oggetto events disponibile come $event
HTML
<input ng-click="onClick($event)">Click me</input>
controllore
.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>
controllore
...
$scope.count = function(){
$scope.count = $scope.count + 1;
}
...
Quando si fa clic sul pulsante, un'invocazione della funzione onClick stamperà "Hello click event" seguito dall'oggetto evento.
ngRequired
ng-required aggiunge o rimuove l'attributo di convalida required su un elemento, che a sua volta abiliterà e disabiliterà la chiave di convalida require per l' input .
È usato per definire opzionalmente se è richiesto un elemento di input per avere un valore non vuoto. La direttiva è utile quando si progetta la convalida su moduli HTML complessi.
HTML
<input type="checkbox" ng-model="someBooleanValue">
<input type="text" ng-model="username" ng-required="someBooleanValue">
NG-modello-options
ng-model-options consente di modificare il comportamento predefinito di ng-model , questa direttiva consente di registrare eventi che si attivano quando il modello ng viene aggiornato e di applicare un effetto antirimbalzo.
Questa direttiva accetta un'espressione che valuterà un oggetto definizione o un riferimento a un valore di ambito.
Esempio:
<input type="text" ng-model="myValue" ng-model-options="{'debounce': 500}">
L'esempio precedente allegherà un effetto antirimbalzo di 500 millisecondi su myValue , che farà aggiornare il modello a 500 ms dopo che l'utente ha finito di digitare input (ovvero, quando myValue terminato l'aggiornamento).
Proprietà dell'oggetto disponibili
updateOn: specifica quale evento deve essere associato all'inputng-model-options="{ updateOn: 'blur'}" // will update on blurdebounce: specifica un ritardo di alcuni millisecondi verso l'aggiornamento del modellong-model-options="{'debounce': 500}" // will update the model after 1/2 secondallowInvalid: un flag booleano che consente un valore non valido per il modello, aggirando la convalida del modulo predefinito, per impostazione predefinita questi valori verranno considerati nonundefined.getterSetter: un flag booleano che indica se trattare ilng-modelcome una funzione getter / setter invece di un valore di modello normale. La funzione verrà quindi eseguita e restituirà il valore del modello.Esempio:
<input type="text" ng-model="myFunc" ng-model-options="{'getterSetter': true}"> $scope.myFunc = function() {return "value";}timezone: definisce il fuso orario per il modello se l'input è delladateotime. tipi
ngCloak
La direttiva
ngCloakviene utilizzata per impedire che il modello html Angolare venga visualizzato brevemente dal browser nel suo formato raw (non compilato) durante il caricamento dell'applicazione. - Visualizza sorgente
HTML
<div ng-cloak>
<h1>Hello {{ name }}</h1>
</div>
ngCloak può essere applicato all'elemento body, ma l'uso preferito è applicare più direttive ngCloak a piccole porzioni della pagina per consentire il rendering progressivo della vista del browser.
La direttiva ngCloak non ha parametri.
Vedi anche: Prevenire lo sfarfallio
ngInclude
ng-include consente di delegare il controllo di una parte della pagina a un controller specifico. Potresti voler farlo perché la complessità di quel componente sta diventando tale da incapsulare tutta la logica in un controller dedicato.
Un esempio è:
<div ng-include
src="'/gridview'"
ng-controller='gridController as gc'>
</div>
Si noti che /gridview dovrà essere servito dal server Web come URL distinto e legittimo.
Inoltre, si noti che src -attribute accetta un'espressione Angolare. Potrebbe trattarsi di una variabile o di una chiamata di funzione, ad esempio o, come in questo esempio, di una costante di stringa. In questo caso è necessario assicurarsi di avvolgere l'URL di origine tra virgolette singole , quindi verrà valutato come costante di stringa. Questa è una fonte comune di confusione.
All'interno di /gridview html, puoi fare riferimento a gridController come se fosse avvolto attorno alla pagina, ad esempio:
<div class="row">
<button type="button" class="btn btn-default" ng-click="gc.doSomething()"></button>
</div>
ngSrc
L'utilizzo del markup angolare come {{hash}} in un attributo src non funziona correttamente. Il browser recupera dall'URL con il testo letterale {{hash}} finché Angular sostituisce l'espressione all'interno di {{hash}} . ng-src direttiva ng-src sovrascrive l'attributo src originale per l'elemento tag immagine e risolve il problema
<div ng-init="pic = 'pic_angular.jpg'">
<h1>Angular</h1>
<img ng-src="{{pic}}">
</div>
ngPattern
La direttiva ng-pattern accetta un'espressione che valuta un modello di espressione regolare e utilizza tale modello per convalidare un input testuale.
Esempio:
Diciamo che vogliamo che un elemento <input> diventi valido quando è value (ng-model) è un indirizzo IP valido.
Modello:
<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
Utilizzato principalmente in ng-repeat ngValue è utile quando si generano dinamicamente elenchi di pulsanti di opzione usando 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
La direttiva ngCopy specifica il comportamento da eseguire su un evento di copia.
Impedire a un utente di copiare i dati
<p ng-copy="blockCopy($event)">This paragraph cannot be copied</p>
Nel controller
$scope.blockCopy = function(event) {
event.preventDefault();
console.log("Copying won't work");
}
ngPaste
La direttiva ngPaste specifica il comportamento personalizzato da eseguire quando un utente incolla il contenuto
<input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
pasted: {{paste}}
ngHref
ngHref è usato al posto dell'attributo href, se abbiamo espressioni angolari all'interno del valore href. La direttiva ngHref sovrascrive l'attributo href originale di un tag html utilizzando l'attributo href come tag, tag, ecc.
La direttiva ngHref assicura che il collegamento non sia interrotto anche se l'utente fa clic sul collegamento prima che AngularJS abbia valutato il codice.
Esempio 1
<div ng-init="linkValue = 'http://stackoverflow.com'">
<p>Go to <a ng-href="{{linkValue}}">{{linkValue}}</a>!</p>
</div>
Esempio 2 Questo esempio ottiene dinamicamente il valore href dalla casella di input e lo carica come valore href.
<input ng-model="value" />
<a id="link" ng-href="{{value}}">link</a>
Esempio 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
La direttiva ng-list viene utilizzata per convertire una stringa delimitata da un input di testo a una matrice di stringhe o viceversa.
La direttiva ng-list usa un delimitatore predefinito di ", " (spazio virgola).
È possibile impostare manualmente il delimitatore assegnando a ng-list un delimitatore come questo ng-list="; " .
In questo caso il delimitatore è impostato su un punto e virgola seguito da uno spazio.
Di default ng-list ha un attributo ng-trim che è impostato su true. ng-trim quando false, rispetterà lo spazio bianco nel delimitatore. Per impostazione predefinita, ng-list non prende in considerazione lo spazio bianco a meno che non si imposti ng-trim="false" .
Esempio:
angular.module('test', [])
.controller('ngListExample', ['$scope', function($scope) {
$scope.list = ['angular', 'is', 'cool!'];
}]);
Un delimitatore del cliente è impostato per essere ; . E il modello della casella di input è impostato sull'array che è stato creato sull'oscilloscopio.
<body ng-app="test" ng-controller="ngListExample">
<input ng-model="list" ng-list="; " ng-trim="false">
</body>
La casella di input verrà visualizzata con il contenuto: angular; is; cool!