javascript - ¿Cuál es la diferencia entre el atributo `value` y los atributos` ng-value` en angularjs
angularjs-scope angularjs-ng-repeat (1)
¿Cuál es la diferencia entre el value
y ng-value
atributos de ng-value
en las plantillas de angularjs? Si uso ng-if
en el campo usando el atributo value, funciona correctamente, pero si cambio el value
del atributo a ng-value
, deja de funcionar.
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>
Según los documentos , ngValue
toma una "expresión angular, cuyo valor se vinculará al atributo de value
del elemento de input
" .
Entonces, cuando usa ng-value="hard"
, se interpreta como una expresión y el value
está enlazado a $scope.hard
(que probablemente undefined
esté undefined
).
ngValue
es útil para evaluar expresiones; no tiene ninguna ventaja sobre el value
para establecer valores codificados. Sin embargo, si desea codificar un valor con ngValue
, debe ngValue
en ''''
:
ng-value="''hard''"
ACTUALIZAR:
A partir de v1.6, ngValue
también establecerá la propiedad de value
del elemento (además del atributo de value
). Puede que no afecte su caso de uso, pero es otra diferencia que vale la pena tener en cuenta.