web-dev-qa-db-fra.com

Quelle est la différence entre l'attribut `value` et les attributs` ng-value` dans angularjs

Quelle est la différence entre value et ng-value attributs dans les modèles angularjs? Si j'utilise ng-if sur le terrain en utilisant l'attribut value cela fonctionne correctement mais si je change l'attribut value en ng-value il cesse de fonctionner.

example 1  // it works 

<input type='radio' ng-model='difficulty' value='hard'/>
<div ng-if="difficulty == 'hard'">
     <p>difficulty is hard</p>
</div>  

Example 2 // it doesn't work

<input type='radio' ng-model='level' ng-value='hard'/>
<div ng-if= "level == 'hard'" >
     <p>level is hard</p>
</div>
17
Sarfraz Ahmad

Selon la documentation, ngValue prend une expression angulaire ", dont la valeur sera lié à l'attribut value de l'élément input ".

Ainsi, lorsque vous utilisez ng-value="hard", il est interprété comme une expression et le value est lié à $scope.hard (qui est probablement undefined).
ngValue est utile pour évaluer les expressions - il n'a aucun avantage sur value pour définir des valeurs codées en dur. Pourtant, si vous voulez coder en dur une valeur avec ngValue, vous devez la mettre entre '':

ng-value="'hard'"

MISE À JOUR:
À partir de la version 1.6, ngValue définira également la propriété value de l'élément ( en plus de l'attribut value). Cela pourrait ne pas affecter votre cas d'utilisation, mais c'est une autre différence à garder à l'esprit.

27
gkalpak