Angularjsテンプレートのvalue
属性とng-value
属性の違いは何ですか? value属性を使用してフィールドでng-if
を使用すると正常に機能しますが、属性value
をng-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>
ドキュメントによると、ngValue
は "角度式を取り、値は、value
要素のinput
属性にバインドされます "。
したがって、ng-value="hard"
を使用すると、式として解釈され、value
は$scope.hard
(おそらくundefined
)にバインドされます。ngValue
は式を評価するのに役立ちます-ハードコードされた値を設定する場合、value
に勝る利点はありません。ただし、ngValue
を使用して値をハードコーディングする場合は、''
で囲む必要があります。
ng-value="'hard'"
UPDATE:
v1.6以降、ngValue
は要素のvalue
propertyも設定します( value
属性に加えて)。ユースケースには影響しないかもしれませんが、覚えておく価値のあるもう1つの違いです。