web-dev-qa-db-ja.com

angularjsの `value`属性と` ng-value`属性の違いは何ですか

Angularjsテンプレートのvalue属性とng-value属性の違いは何ですか? value属性を使用してフィールドでng-ifを使用すると正常に機能しますが、属性valueng-valueに変更すると機能しなくなります。

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

ドキュメントによると、ngValue "角度式を取り、値は、value要素のinput属性にバインドされます "

したがって、ng-value="hard"を使用すると、式として解釈され、value$scope.hard(おそらくundefined)にバインドされます。
ngValueは式を評価するのに役立ちます-ハードコードされた値を設定する場合、valueに勝る利点はありません。ただし、ngValueを使用して値をハードコーディングする場合は、''で囲む必要があります。

ng-value="'hard'"

UPDATE:
v1.6以降、ngValueは要素のvaluepropertyも設定します( value属性に加えて)。ユースケースには影響しないかもしれませんが、覚えておく価値のあるもう1つの違いです。

27
gkalpak