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 blur
debounce
: specifica un ritardo di alcuni millisecondi verso l'aggiornamento del modellong-model-options="{'debounce': 500}" // will update the model after 1/2 second
allowInvalid
: 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-model
come 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 è delladate
otime
. tipi
ngCloak
La direttiva
ngCloak
viene 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!