据我所知,ng-model设置了分配模型的特定元素的值。 鉴于ng值与ng-model有何不同?
答案 0 :(得分:25)
与ng-model结合使用;对于无线电和选择,它是在选择该项目时设置为ng-model的值。用它作为“价值”的替代品。元素的属性,它始终将字符串值存储到关联的ng模型中。
在单选按钮的上下文中,它允许您使用非字符串值。例如,如果你有单选按钮“是”'和'不' (或同等的)价值观真实'并且' false' - 如果您使用' value',存储在ng-model中的值将成为字符串。如果你使用' ng-value',它们将仍然是布尔值。
但是,在select元素的上下文中,请注意ng值仍将始终视为字符串。要为select设置非字符串值,请使用ngOptions。
答案 1 :(得分:13)
简单描述
ng-model
$modelValue
(值位于实际范围内)& $viewValue
(视图上显示的值)。<强>例如强>
<input type="text/checkbox/radio/number/tel/email/url" ng-model="test"/>
ng-value
ng-model
之类的input
值分配值,
select
&amp; textarea
(使用ng-init
)ng-value
确实提供了良好的约束力,如果您通过ajax设置ng-model
值而写value
属性并不支持radio
&amp;动态创建option
选项时select
标记。string
值,它不支持对象值。<强> HTML 强>
<input
[ng-value="string"]>
...
</input>
或强>
<select ng-model="selected">
<option ng-value="option.value" ng-repeat="option in options">
{{option.name}}
</option>
</select>
...
答案 2 :(得分:3)
ng-value
字段中input
的一个好用途是,如果要绑定到变量,而是基于另一个变量的值。例如:
<h1>The code is {{model.code}}.</h1>
<p>Set the new code: <input type="text" ng-bind="model.code" /></p>
当用户输入input
时,标题中的值将会更新。如果您不想这样,可以修改为:
<input type="text" ng-value="model.code" ng-bind="model.theNewCode" />
theNewCode
将会更新,但code
将保持不变。
答案 3 :(得分:2)
根据https://docs.angularjs.org/api/ng/directive/ngValue, ngValue 采用&#34;角度表达式,其值将绑定到输入元素&#34;的值属性。
因此,当你使用ng-value =&#34; hard&#34;时,它被解释为一个表达式,并且该值绑定到$ scope.hard(可能是未定义的)。 ngValue对于计算表达式很有用 - 它对于设置硬编码值没有优势。但是,如果您想使用ngValue对值进行硬编码,则必须将其括在&#39;&#39;中:
纳克值=&#34;&#39;硬盘&#39;&#34;
ng-model 旨在放在表单元素中,并具有双向数据绑定($ scope - &gt; view和view - &gt; $ scope),例如<input ng-model="val"/>.
或者你可以说 ng-model 指令将HTML控件(input,select,textarea)的值绑定到应用程序数据。
答案 4 :(得分:0)
文档明确指出,与ng-value
进行双向绑定时,不应使用ng-model
。
从文档中:
ngValue
将给定的表达式绑定到元素的值。
它还可以用于实现给定表达式与输入元素(例如
input[text]
或textarea
)的单向绑定,元素不使用ngModel
。
相反,从控制器初始化值: