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>
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.