AngularJS
Directivas incorporadas
Buscar..
Expresiones angulares - Texto vs. Número
Este ejemplo demuestra cómo se evalúan las expresiones angulares cuando se usa type="text"
y type="number"
para el elemento de entrada. Considere el siguiente controlador y vea:
Controlador
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.textInput = {
value: '5'
};
$scope.numberInput = {
value: 5
};
});
Ver
<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>
- Cuando se usa
+
en una expresión vinculada al ingreso de texto , el operador concatenará las cadenas (primer ejemplo), mostrando 55 en la pantalla*
. - Cuando se usa
+
en una expresión vinculada a la entrada de números , el operador devuelve la suma de los números (segundo ejemplo), mostrando 10 en la pantalla*
.
*
- Eso es hasta que el usuario cambia el valor en el campo de entrada, luego la pantalla cambiará en consecuencia.
ngRepetir
ng-repeat
es una directiva integrada en Angular que le permite iterar una matriz o un objeto y le permite repetir un elemento una vez para cada elemento de la colección.
ng-repetir una matriz
<ul>
<li ng-repeat="item in itemCollection">
{{item.Name}}
</li>
</ul>
Dónde:
item = item individual en la colección
itemCollection = La matriz que está iterando
ng-repetir un objeto
<ul>
<li ng-repeat="(key, value) in myObject">
{{key}} : {{value}}
</li>
</ul>
Dónde:
clave = el nombre de la propiedad
valor = el valor de la propiedad
myObject = el objeto que estás iterando
filtrar su ng-repetir por la entrada del usuario
<input type="text" ng-model="searchText">
<ul>
<li ng-repeat="string in stringArray | filter:searchText">
{{string}}
</li>
</ul>
Dónde:
searchText = el texto por el cual el usuario quiere filtrar la lista
stringArray = una matriz de cadenas, por ejemplo, ['string', 'array']
También puede mostrar o hacer referencia a los elementos filtrados en otro lugar asignando un alias de salida de filtro as aliasName
, de este 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 y ng-repeat-end
Para repetir varios elementos de DOM definiendo un inicio y un punto final, puede usar las directivas ng-repeat-start
y 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>
Salida:
- 1
- 2
- 3
- 4
Es importante cerrar siempre ng-repeat-start
con ng-repeat-end
.
Variables
ng-repeat
también expone estas variables dentro de la expresión
Variable | Tipo | Detalles |
---|---|---|
$index | Número | Es igual al índice de la iteración actual ($ index === 0 se evaluará como verdadero en el primer elemento iterado; vea $first ) |
$first | Booleano | Evalúa a verdadero en el primer elemento iterado |
$last | Booleano | Evalúa a verdadero en el último elemento iterado |
$middle | Booleano | Se evalúa como verdadero si el elemento se encuentra entre $first y $last |
$even | Booleano | Se evalúa como verdadero en una iteración de número par (equivalente a $index%2===0 ) |
$odd | Booleano | Se evalúa como verdadero en una iteración de número impar (equivalente a $index%2===1 ) |
Consideraciones de rendimiento
La representación de ngRepeat
puede ser lenta, especialmente cuando se usan colecciones grandes.
Si los objetos de la colección tienen una propiedad de identificador, siempre debe track by
el identificador en lugar de todo el objeto, que es la funcionalidad predeterminada. Si no hay ningún identificador presente, siempre puede usar el $index
incorporado.
<div ng-repeat="item in itemCollection track by item.id">
<div ng-repeat="item in itemCollection track by $index">
Alcance de ngRepeat
ngRepeat
siempre creará un ámbito secundario aislado, por lo que se debe tener cuidado si se debe acceder al ámbito principal dentro de la repetición.
Este es un ejemplo simple que muestra cómo puede establecer un valor en su ámbito principal desde un evento de clic dentro de 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'
}];
Si solo había val = item.value
en ng-click
, no se actualizará el val
en el ámbito principal debido al ámbito aislado. Es por eso que se accede al alcance principal con $parent
referencia de $parent
o con la sintaxis de controllerAs
(por ejemplo, ng-controller="mainController as ctrl"
).
Anidado ng-repetir
También puede utilizar ng-nest anidado.
<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']
];
});
Aquí para acceder al índice de padre ng-repeat dentro de hijo ng-repeat, puede usar $parent.$index
.
ngShow y ngOcultar
La directiva ng-show
muestra u oculta el elemento HTML en función de si la expresión que se le pasa es verdadera o falsa. Si el valor de la expresión es falsy, entonces se ocultará. Si es veraz entonces se mostrará.
La directiva ng-hide
es similar. Sin embargo, si el valor es falsy, mostrará el elemento HTML. Cuando la expresión sea veraz la esconderá.
Controlador :
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';
}
Ver
<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>
ngOpciones
ngOptions
es una directiva que simplifica la creación de un cuadro desplegable html para la selección de un elemento de una matriz que se almacenará en un modelo. El atributo ngOptions se usa para generar dinámicamente una lista de elementos <option>
para el elemento <select>
usando la matriz u objeto obtenido al evaluar la expresión de comprensión ngOptions.
Con ng-options
el marcado se puede reducir a solo una etiqueta de selección y la directiva creará la misma selección:
<select ng-model="selectedFruitNgOptions"
ng-options="curFruit as curFruit.label for curFruit in fruit">
</select>
Hay otra forma de crear opciones de select
usando ng-repeat
, pero no se recomienda usar ng-repeat
ya que se usa principalmente para fines generales como, por ejemplo, forEach
solo para hacer un bucle. Mientras que ng-options
es específicamente para crear opciones de etiqueta select
.
El ejemplo anterior usando ng-repeat
sería
<select ng-model="selectedFruit">
<option ng-repeat="curFruit in fruit" value="{{curFruit}}">
{{curFruit.label}}
</option>
</select>
Veamos el ejemplo anterior en detalle también con algunas variaciones en él.
Modelo de datos para el ejemplo:
$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>
Etiqueta de opción generada en la selección:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Efectos:
f.label
será la etiqueta de la <option>
y el valor contendrá todo el objeto.
<!-- select as label for value in array -->
<select ng-options="f.value as f.label for f in fruit" ng-model="selectedFruit"></select>
Etiqueta de opción generada en la selección:
<option value="4"> Apples </option>
Efectos:
f.value
(4) será el valor en este caso mientras la etiqueta siga siendo la misma.
<!-- 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>
Etiqueta de opción generada en la selección:
<option value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Efectos:
Las opciones se agruparán en función de su value
. Las opciones con el mismo value
caerán en una categoría
<!-- 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>
Etiqueta de opción generada en la selección:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Efectos:
"Manzanas" y "Limas" se deshabilitarán (no se puede seleccionar) debido a la condición disable when f.value==4
. Todas las opciones con value=4
serán deshabilitadas
<!-- 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>
Etiqueta de opción generada en la selección:
<option value="4"> Apples </option>
Efectos:
No hay cambios visuales cuando se utiliza trackBy
, pero Angular detectará los cambios por id
lugar de por referencia, lo que siempre es una solución mejor.
<!-- 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>
Etiqueta de opción generada en la selección:
<option disabled="" value="{ label: "Apples", value: 4, id: 2 }"> Apples </option>
Efectos:
orderBy
es un filtro estándar de AngularJS que organiza las opciones en orden ascendente (por defecto), por lo que "Naranjas" aparecerá en primer lugar desde su id
= 1.
Todos los <select>
con ng-options
deben tener adjunto ng-model
.
ngModel
Con ng-model puedes vincular una variable a cualquier tipo de campo de entrada. Puede mostrar la variable utilizando llaves dobles, por ejemplo, {{myAge}}
.
<input type="text" ng-model="myName">
<p>{{myName}}</p>
A medida que ingresa el campo de entrada o lo modifica de alguna manera, verá el valor en la actualización del párrafo al instante.
La variable ng-model, en este caso, estará disponible en su controlador como $scope.myName
. Si está utilizando la sintaxis de controllerAs
:
<div ng-controller="myCtrl as mc">
<input type="text" ng-model="mc.myName">
<p>{{mc.myName}}</p>
</div>
Necesitará consultar el alcance del controlador antes de que el alias del controlador definido en el atributo ng-controller a la variable ng-model. De esta manera, no necesitará inyectar $scope
en su controlador para hacer referencia a su variable ng-model, la variable estará disponible como this.myName
dentro de la función de su controlador.
clase ng
Supongamos que necesita mostrar el estado de un usuario y que tiene varias clases posibles de CSS que podrían usarse. Angular hace que sea muy fácil elegir de una lista de varias clases posibles que le permiten especificar una lista de objetos que incluye condicionales. Angular es capaz de usar la clase correcta basada en la veracidad de los condicionales.
Su objeto debe contener pares clave / valor. La clave es un nombre de clase que se aplicará cuando el valor (condicional) se evalúe como verdadero.
<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 verificará el objeto $scope.user
para ver el estado active
y el número de level
. Dependiendo de los valores en esas variables, Angular aplicará el estilo correspondiente a <span>
.
ngIf
ng-if
es una directiva similar a ng-show
pero inserta o elimina el elemento del DOM en lugar de simplemente ocultarlo. Angular 1.1.5 introdujo la directiva ng-if. Puede usar la directiva ng-if por encima de las versiones 1.1.5. Esto es útil porque Angular no procesará los resúmenes de los elementos dentro de un ng-if
eliminado ng-if
reduce la carga de trabajo de Angular, especialmente para los enlaces de datos complejos.
A diferencia de ng-show
, la directiva ng-if
crea un ámbito secundario que usa herencia prototípica. Esto significa que establecer un valor primitivo en el ámbito secundario no se aplicará al padre. Para establecer una primitiva en el ámbito $parent
propiedad $parent
en el ámbito secundario deberá utilizarse.
JavaScript
angular.module('MyApp', []);
angular.module('MyApp').controller('myController', ['$scope', '$window', function myController($scope, $window) {
$scope.currentUser= $window.localStorage.getItem('userName');
}]);
Ver
<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 si currentUser
no está indefinido
<div ng-controller="myController">
<div ng-if="currentUser">
Hello, {{currentUser}}
</div>
<!-- ng-if: !currentUser -->
</div>
DOM Si currentUser
está currentUser
<div ng-controller="myController">
<!-- ng-if: currentUser -->
<div ng-if="!currentUser">
<a href="/login">Log In</a>
<a href="/register">Register</a>
</div>
</div>
Promesa de la función
La directiva ngIf también acepta funciones, que lógicamente requieren devolver verdadero o falso.
<div ng-if="myFunction()">
<span>Span text</span>
</div>
El texto de intervalo solo aparecerá si la función devuelve verdadero.
$scope.myFunction = function() {
var result = false;
// Code to determine the boolean value of result
return result;
};
Como cualquier expresión angular, la función acepta cualquier tipo de variables.
ngMouseenter y ngMouseleave
Las ng-mouseenter
y ng-mouseleave
son útiles para ejecutar eventos y aplicar el estilo CSS cuando se desplaza dentro o fuera de sus elementos DOM.
La directiva ng-mouseenter
ejecuta una expresión en un evento de ingreso de mouse (cuando el usuario ingresa el puntero del mouse sobre el elemento DOM en el que reside esta directiva)
HTML
<div ng-mouseenter="applyStyle = true" ng-class="{'active': applyStyle}">
En el ejemplo anterior, cuando el usuario apunta su mouse sobre el div
, applyStyle
cambia a true
, que a su vez aplica la clase .active
CSS en la ng-class
.
La directiva ng-mouseleave
ejecuta una expresión y un evento de salida del mouse (cuando el usuario retira el cursor del mouse del elemento DOM en el que reside esta directiva)
HTML
<div ng-mouseenter="applyStyle = true" ng-mouseleaver="applyStyle = false" ng-class="{'active': applyStyle}">
Reutilizando el primer ejemplo, ahora cuando el usuario le quita el puntero del mouse de la .active
, la clase .active
se elimina.
deshabilitado
Esta directiva es útil para limitar los eventos de entrada basados en ciertas condiciones existentes.
La directiva ng-disabled
acepta una expresión que debe evaluar valores verdaderos o falsos.
ng-disabled
se utiliza para aplicar condicionalmente el atributo disabled
en un elemento de 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
se evalúa como verdadero si la longitud de la input
es 0, que a su vez desactiva el botón, impidiendo que el usuario dispare el evento click de ng-click
ngDblclick
La directiva ng-dblclick
es útil cuando desea vincular un evento de doble clic en sus elementos DOM.
Esta directiva acepta una expresión.
HTML
<input type="number" ng-model="num = num + 1" ng-init="num=0">
<button ng-dblclick="num++">Double click me</button>
En el ejemplo anterior, el valor retenido en la input
se incrementará cuando se haga doble clic en el botón.
Hoja de trucos de directivas incorporadas
ng-app
Establece la sección AngularJS.
ng-init
Establece un valor variable predeterminado.
ng-bind
Alternativa a la plantilla {{}}.
ng-bind-template
Enlaza varias expresiones a la vista.
ng-non-bindable
que los datos no son vinculables.
ng-bind-html
Enlaza la propiedad HTML interna de un elemento HTML.
ng-change
Evalúa la expresión especificada cuando el usuario cambia la entrada.
ng-checked
Establece la casilla de verificación.
ng-class
Establece la clase css dinámicamente.
ng-cloak
Evita mostrar el contenido hasta que AngularJS tome el control.
ng-click
Ejecuta un método o expresión cuando se hace clic en el elemento.
ng-controller
Asocia una clase de controlador a la vista.
ng-disabled
Controla la propiedad deshabilitada del elemento de formulario.
ng-form
Establece un formulario
ng-href
Vincule dinámicamente las variables AngularJS al atributo href.
ng-include
Se utiliza para recuperar, compilar e incluir un fragmento de HTML externo a su página.
ng-if
Quita o recrea un elemento en el DOM dependiendo de una expresión
ng-switch
condicionalmente el control en función de la expresión correspondiente.
ng-model
Enlaza elementos de entrada, selección, área de texto, etc. con propiedad de modelo.
ng-readonly
Se utiliza para establecer el atributo readonly en un elemento.
ng-repeat
Se utiliza para recorrer cada elemento de una colección para crear una nueva plantilla.
ng-selected
Se utiliza para configurar la opción seleccionada en el elemento.
ng-show/ng-hide
Muestra / ng-show/ng-hide
elementos basados en una expresión.
ng-src
Vincular dinámicamente las variables AngularJS al atributo src.
ng-submit
Enlazar expresiones angulares a eventos de envío.
ng-value
Enlazar expresiones angulares al valor de.
ng-required
Enlazar expresiones angulares a eventos de envío.
ng-style
Establece el estilo CSS en un elemento HTML.
ng-pattern
Agrega el validador de patrones a ngModel.
ng-maxlength
Agrega el validador de maxlength a ngModel.
ng-minlength
Agrega el validador de minlength a ngModel.
ng-classeven
Funciona en conjunto con ngRepeat y surte efecto solo en filas impares (pares).
ng-classodd
Funciona junto con ngRepeat y surte efecto solo en filas impares (pares).
ng-cut
Se utiliza para especificar el comportamiento personalizado en el evento de corte.
ng-copy
Se utiliza para especificar el comportamiento personalizado en el evento de copia.
ng-paste
Se utiliza para especificar el comportamiento personalizado en el evento de pegado.
ng-options
Se utiliza para generar dinámicamente una lista de elementos para el elemento.
ng-list
Se utiliza para convertir una cadena en una lista en función del delimitador especificado.
ng-open
Se utiliza para establecer el atributo abierto en el elemento, si la expresión dentro de ngOpen es veraz.
Haga clic en
La directiva ng-click
adjunta un evento de clic a un elemento DOM.
La directiva ng-click
permite especificar un comportamiento personalizado cuando se hace clic en un elemento de DOM.
Es útil cuando desea adjuntar eventos de clic en los botones y manejarlos en su controlador.
Esta directiva acepta una expresión con el objeto de eventos disponible como $event
HTML
<input ng-click="onClick($event)">Click me</input>
Controlador
.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>
Controlador
...
$scope.count = function(){
$scope.count = $scope.count + 1;
}
...
Cuando se hace clic en el botón, una invocación de la función onClick
imprimirá "Hola evento de clic" seguido del objeto de evento.
ngRequisito
ng-required
agrega o elimina el atributo de validación required
en un elemento, que a su vez habilitará y deshabilitará la clave de validación require
para la input
.
Se usa para definir opcionalmente si se requiere que un elemento de input
tenga un valor no vacío. La directiva es útil cuando se diseña la validación en formularios HTML complejos.
HTML
<input type="checkbox" ng-model="someBooleanValue">
<input type="text" ng-model="username" ng-required="someBooleanValue">
ng-model-options
ng-model-options
permite cambiar el comportamiento predeterminado de ng-model
, esta directiva permite registrar eventos que se activarán cuando se actualice el modelo ng y adjuntar un efecto de rebote.
Esta directiva acepta una expresión que evaluará un objeto de definición o una referencia a un valor de alcance.
Ejemplo:
<input type="text" ng-model="myValue" ng-model-options="{'debounce': 500}">
El ejemplo anterior adjuntará un efecto de rebote de 500 milisegundos en myValue
, lo que hará que el modelo se actualice 500 ms después de que el usuario haya terminado de escribir sobre la input
(es decir, cuando myValue
finalizado la actualización).
Propiedades de objeto disponibles
updateOn
: especifica qué evento debe estar vinculado a la entradang-model-options="{ updateOn: 'blur'}" // will update on blur
debounce
: especifica un retraso de algunos milisegundos hacia la actualización del modelong-model-options="{'debounce': 500}" // will update the model after 1/2 second
allowInvalid
: un indicador booleano que permite un valor no válido para el modelo, evitando la validación de formularios por defecto, de forma predeterminada, estos valores se tratarían comoundefined
.getterSetter
: un indicador booleano que indica si se debe tratar elng-model
como una función getter / setter en lugar de un valor de modelo simple. La función se ejecutará y devolverá el valor del modelo.Ejemplo:
<input type="text" ng-model="myFunc" ng-model-options="{'getterSetter': true}"> $scope.myFunc = function() {return "value";}
timezone
: define la zona horaria para el modelo si la entrada es de ladate
o latime
. tipos
capa ng
La directiva
ngCloak
se usa para evitar que el navegador muestre brevemente la plantilla html Angular en su forma original (sin compilar) mientras se carga la aplicación. - Ver fuente
HTML
<div ng-cloak>
<h1>Hello {{ name }}</h1>
</div>
ngCloak
se puede aplicar al elemento del cuerpo, pero el uso preferido es aplicar varias directivas ngCloak a pequeñas porciones de la página para permitir la representación progresiva de la vista del navegador.
La directiva ngCloak
no tiene parámetros.
Ver también: prevenir el parpadeo
ngIncluir
ng-include le permite delegar el control de una parte de la página a un controlador específico. Es posible que desee hacer esto porque la complejidad de ese componente se está volviendo tal que desea encapsular toda la lógica en un controlador dedicado.
Un ejemplo es:
<div ng-include
src="'/gridview'"
ng-controller='gridController as gc'>
</div>
Tenga en cuenta que la /gridview
deberá ser servida por el servidor web como una URL distinta y legítima.
Además, tenga en cuenta que el atributo src
acepta una expresión angular. Esto podría ser una variable o una función llamada, por ejemplo, o, como en este ejemplo, una constante de cadena. En este caso, debe asegurarse de envolver la URL de origen entre comillas simples , para que se evalúe como una constante de cadena. Esta es una fuente común de confusión.
Dentro de /gridview
html, puede referirse a gridController
como si estuviera envuelto alrededor de la página, por ejemplo:
<div class="row">
<button type="button" class="btn btn-default" ng-click="gc.doSomething()"></button>
</div>
ngSrc
El uso del marcado angular como {{hash}}
en un atributo src no funciona bien. El navegador buscará desde la URL con el texto literal {{hash}}
hasta que Angular reemplace la expresión dentro de {{hash}}
. ng-src
directiva ng-src
anula el atributo src
original para el elemento de etiqueta de imagen y resuelve el problema
<div ng-init="pic = 'pic_angular.jpg'">
<h1>Angular</h1>
<img ng-src="{{pic}}">
</div>
ngPatrón
La directiva ng-pattern
acepta una expresión que se evalúa como un patrón de expresión regular y usa ese patrón para validar una entrada de texto.
Ejemplo:
Digamos que queremos que un elemento <input>
sea válido cuando su valor (ng-model) es una dirección IP válida.
Modelo:
<input type="text" ng-model="ipAddr" ng-pattern="ipRegex" name="ip" required>
Controlador:
$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
Utilizado principalmente en ng-repeat
ngValue es útil cuando se generan dinámicamente listas de botones de radio 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 directiva ngCopy
especifica el comportamiento que se ejecutará en un evento de copia.
Evitar que un usuario copie datos
<p ng-copy="blockCopy($event)">This paragraph cannot be copied</p>
En el controlador
$scope.blockCopy = function(event) {
event.preventDefault();
console.log("Copying won't work");
}
ngPaste
La directiva ngPaste
especifica un comportamiento personalizado para ejecutarse cuando un usuario pega contenido
<input ng-paste="paste=true" ng-init="paste=false" placeholder='paste here'>
pasted: {{paste}}
ngHref
ngHref se usa en lugar del atributo href, si tenemos expresiones angulares dentro del valor href. La directiva ngHref anula el atributo href original de una etiqueta html usando el atributo href como etiqueta, etiqueta, etc.
La directiva ngHref asegura que el enlace no esté roto, incluso si el usuario hace clic en el enlace antes de que AngularJS haya evaluado el código.
Ejemplo 1
<div ng-init="linkValue = 'http://stackoverflow.com'">
<p>Go to <a ng-href="{{linkValue}}">{{linkValue}}</a>!</p>
</div>
Ejemplo 2 Este ejemplo obtiene dinámicamente el valor href del cuadro de entrada y lo carga como valor href.
<input ng-model="value" />
<a id="link" ng-href="{{value}}">link</a>
Ejemplo 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 directiva ng-list
se usa para convertir una cadena delimitada de una entrada de texto a una matriz de cadenas o viceversa.
La directiva ng-list
usa un delimitador predeterminado de ", "
(espacio de coma).
Puede configurar el delimitador manualmente asignando ng-list
un delimitador como este ng-list="; "
.
En este caso, el delimitador se establece en un punto y coma seguido de un espacio.
Por defecto, ng-list
tiene un atributo ng-trim
que se establece en verdadero. ng-trim
cuando es falso, respetará el espacio en blanco en su delimitador. De forma predeterminada, ng-list
no tiene en cuenta el espacio en blanco a menos que establezca ng-trim="false"
.
Ejemplo:
angular.module('test', [])
.controller('ngListExample', ['$scope', function($scope) {
$scope.list = ['angular', 'is', 'cool!'];
}]);
Un delimitador del cliente se establece para ser ;
. Y el modelo del cuadro de entrada se establece en la matriz que se creó en el ámbito.
<body ng-app="test" ng-controller="ngListExample">
<input ng-model="list" ng-list="; " ng-trim="false">
</body>
El cuadro de entrada se mostrará con el contenido: angular; is; cool!