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

时间:2014-05-26 08:11:18

标签: javascript angularjs angularjs-scope angularjs-ng-repeat angularjs-service

angularjs模板中的valueng-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>

1 个答案:

答案 0 :(得分:26)

根据 the docs ngValue采用&#34;角度表达式,其值将绑定到value属性input元素&#34;

因此,当您使用ng-value="hard"时,它会被解释为表达式,value绑定到$scope.hard(可能是undefined)。
ngValue对于评估表达式很有用 - 它比value没有优势来设置硬编码值。但是,如果您想使用ngValue对值进行硬编码,则必须将其括在''中:

ng-value="'hard'"

<强>更新
从v1.6开始,ngValue还会设置元素的value 属性(除value属性外)。它可能不会影响您的用例,但值得记住的另一个区别是。