Actualmente estoy aprendiendo AngularJS y tengo dificultades para comprender la diferencia entre ng-bind
y ng-model
.
¿Alguien puede decirme en qué se diferencian y cuándo se debe usar uno sobre el otro?
angularjs
angular-ngmodel
ng-bind
doblajes
fuente
fuente
La respuesta de tosh llega muy bien al corazón de la pregunta. Aquí hay información adicional ...
Filtros y Formateadores
ng-bind
yng-model
ambos tienen el concepto de transformar los datos antes de enviarlos al usuario. Para ese fin,ng-bind
usa filtros , mientras queng-model
usa formateadores .filtro (ng-bind)
Con
ng-bind
, puede usar un filtro para transformar sus datos. Por ejemplo,<div ng-bind="mystring | uppercase"></div>
,o más simplemente:
<div>{{mystring | uppercase}}</div>
Tenga en cuenta que
uppercase
es un filtro angular incorporado , aunque también puede crear su propio filtro .formateador (modelo ng)
Para crear un formateador de modelo ng, cree una directiva que lo haga
require: 'ngModel'
, lo que permite que esa directiva obtenga acceso a ngModelcontroller
. Por ejemplo:Luego en tu parcial:
Esto es esencialmente el
ng-model
equivalente de lo que está haciendo eluppercase
filtro en elng-bind
ejemplo anterior.Analizadores
Ahora, ¿qué pasa si planea permitir que el usuario cambie el valor de
mystring
?ng-bind
solo tiene enlace unidireccional, desde modelo -> vista . Sin embargo,ng-model
puede enlazar desde la vista -> modelo, lo que significa que puede permitir que el usuario cambie los datos del modelo, y usando un analizador puede formatear los datos del usuario de una manera simplificada. Así es como se ve:Juega con un plunker en vivo de los
ng-model
ejemplos de formateador / analizador¿Qué más?
ng-model
También tiene validación incorporada. Basta con modificar$parsers
o$formatters
función para llamar ngModel 'scontroller.$setValidity(validationErrorKey, isValid)
función .Angular 1.3 tiene una nueva matriz de validadores $ que puede usar para la validación en lugar de
$parsers
o$formatters
.Angular 1.3 también tiene soporte getter / setter para ngModel
fuente
ngModel
La directiva ngModel vincula una entrada, select, textarea (o control de formulario personalizado) a una propiedad en el ámbito.Esta directiva se ejecuta en el nivel de prioridad 1.
Plunker de ejemplo
JAVASCRIPT
CSS
HTML
ngModel es responsable de:
ngBind
El atributo ngBind le dice a Angular que reemplace el contenido de texto del elemento HTML especificado con el valor de una expresión dada y que actualice el contenido de texto cuando cambie el valor de esa expresión.Esta directiva se ejecuta en el nivel de prioridad 0.
Plunker de ejemplo
JAVASCRIPT
HTML
ngBind es responsable de:
fuente
Si duda entre usar
ng-bind
ong-model
, intente responder estas preguntas:Sí:
ng-bind
(enlace unidireccional)No:
ng-model
(enlace bidireccional)Si:
ng-bind
No:
ng-model
(no debe usar ng-bind donde se requiere valor)Sí:
ng-model
(no puede usar ng-bind con<input>
etiqueta)No:
ng-bind
fuente
ng-model
La directiva ng-model en AngularJS es una de las mayores fortalezas para unir las variables utilizadas en la aplicación con componentes de entrada. Esto funciona como enlace de datos bidireccional. Si desea comprender mejor los enlaces bidireccionales, tiene un componente de entrada y el valor actualizado en ese campo debe reflejarse en otra parte de la aplicación. La mejor solución es vincular una variable a ese campo y generar esa variable donde quiera que se muestre el valor actualizado a través de la aplicación.
ng-bind
ng-bind funciona de manera muy diferente a ng-model. ng-bind es un enlace de datos unidireccional utilizado para mostrar el valor dentro del componente html como HTML interno. Esta directiva no se puede usar para enlazar con la variable sino solo con el contenido de los elementos HTML. De hecho, esto se puede usar junto con ng-model para vincular el componente a elementos HTML. Esta directiva es muy útil para actualizar los bloques como div, span, etc. con contenido HTML interno.
Este ejemplo te ayudaría a entender.
fuente
fuente
ngModel usualmente se usa para etiquetas de entrada para enlazar una variable que podemos cambiar desde una variable del controlador y una página html, pero ngBind se usa para mostrar una variable en una página html y podemos cambiar una variable solo desde el controlador y html solo muestra la variable.
fuente
Podemos usar ng-bind with
<p>
para mostrar, podemos usar atajos parang-bind {{model}}
, no podemos usar ng-bind con controles de entrada html, pero podemos usar atajosng-bind {{model}}
con controles de entrada html.fuente