angularjs中`value`属性和`ng-value`属性有什么区别

Sar*_*mad 17 javascript angularjs angularjs-service angularjs-scope angularjs-ng-repeat

angularjs模板valueng-value属性之间有什么区别?如果我ng-if在使用value属性的字段上使用它可以正常工作但如果我将属性更改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>
Run Code Online (Sandbox Code Playgroud)

gka*_*pak 26

根据文档,ngValue采用"角度表达式,其值将valueinput元素的属性绑定".

因此,当您使用时ng-value="hard",它被解释为一个表达式并且value被绑定$scope.hard(可能undefined).
ngValue对于计算表达式很有用 - 它value对于设置硬编码值没有任何优势.但是,如果要对值进行硬编码ngValue,则必须将其括在'':

ng-value="'hard'"
Run Code Online (Sandbox Code Playgroud)

更新:
与V1.6开始,ngValue也将设置value 属性的元素(除了value属性).它可能不会影响您的用例,但这是值得记住的另一个区别.