Je suis actuellement en apprentissage angularjs et éprouve des difficultés à comprendre la différence entre ng-bind
et ng-model
.
Quelqu'un peut-il me dire comment ils diffèrent et où l'on doit être utilisé plutôt que l'autre?
Je suis actuellement en apprentissage angularjs et éprouve des difficultés à comprendre la différence entre ng-bind
et ng-model
.
Quelqu'un peut-il me dire comment ils diffèrent et où l'on doit être utilisé plutôt que l'autre?
ng-bind a un moyen de liaison de données ($champ d'application --> affichage). Il dispose d'un raccourci {{ val }}
qui affiche l'étendue valeur $scope.val
insérées dans le code html.
ng-modèle est destiné à être mis à l'intérieur de la forme des éléments et des a les deux sens de la liaison de données ($champ d'application --> affichage et afficher --> $champ) par exemple, <input ng-model="val"/>
.
tosh's réponse est au cœur de la question gentiment. Voici quelques informations supplémentaires....
ng-bind
et ng-model
ont à la fois la notion de transformer les données avant de le reproduire pour l'utilisateur. À cette fin, ng-bind
utilise des filtres, tout en ng-model
utilise des formateurs.
Avec ng-bind
, vous pouvez utiliser un filtre pour transformer vos données. Par exemple,
<div ng-bind="mystring | uppercase"></div>
,
ou plus simplement:
<div>{{mystring | uppercase}}</div>
Notez que uppercase
est intégré dans le filtre angulaire, bien que vous pouvez également construire votre propre filtre.
Pour créer une ng-model formateur, vous créez une directive qui n' require: 'ngModel'
, ce qui permet à cette directive pour accéder à ngModel de l' controller
. Par exemple:
app.directive('myModelFormatter', function() {
return {
require: 'ngModel',
link: function(scope, element, attrs, controller) {
controller.$formatters.push(function(value) {
return value.toUpperCase();
});
}
}
}
Puis dans votre partielles:
<input ngModel="mystring" my-model-formatter />
C'est essentiellement l' ng-model
équivalent de ce que l' uppercase
filtre est en train de faire dans l' ng-bind
exemple ci-dessus.
Maintenant, si vous prévoyez de permettre à l'utilisateur de modifier la valeur de mystring
? ng-bind
a qu'une seule façon de liaison, de modèle-->afficher. Toutefois, ng-model
peut se lier de vue-->modèle de ce qui signifie que vous pouvez permettre à l'utilisateur de modifier les données du modèle, et à l'aide d'un analyseur , vous pouvez mettre en forme les données de l'utilisateur dans un processus simplifié. Voici à quoi ça ressemble:
app.directive('myModelFormatter', function() {
return {
require: 'ngModel',
link: function(scope, element, attrs, controller) {
controller.$parsers.push(function(value) {
return value.toLowerCase();
});
}
}
}
Jouer avec un live plunker de l' ng-model
formateur/parser exemples
ng-model
a également intégré dans le processus de validation. Il suffit de modifier votre $parsers
ou $formatters
la fonction à appeler ngModel' controller.$setValidity(validationErrorKey, isValid)
fonction.
Angulaire 1.3 a une nouvelle $validators tableau que vous pouvez utiliser pour validation au lieu de $parsers
ou $formatters
.
Angulaire 1.3 a aussi des getter/setter de soutien pour ngModel
ng-model est une liaison bidirectionnelle objet de contrôler et de contrôle de l'objet. ng-bind est un moyen de liaison modèle de contrôle.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.