据我所了解,ng-model为指定的元素设置值。 那么,ng-value与ng-model有何不同?
据我所了解,ng-model为指定的元素设置值。 那么,ng-value与ng-model有何不同?
简单说明
ng-model
$modelValue
(实际作用域中存在的值)和 $viewValue
(在视图上显示的值)。例如:
<input type="text/checkbox/radio/number/tel/email/url" ng-model="test"/>
ng-value
ng-value
用于将值分配给相应的ng-model
,例如input
, select
和textarea
(也可以使用ng-init
)。ng-model
的值,则ng-value
提供了很好的绑定方式,而编写value
属性则不支持此功能。select
选项时,为radio
和option
标记使用。ng-value
只能具有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>
...
<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
将保持不变。
<input ng-model="val"/>
,或者你可以说ng-model指令将HTML控件(input、select、textarea)的值绑定到应用程序数据。文档明确指出,在使用 ng-model
进行双向绑定时,不应使用 ng-value
。
来自文档:
ngValue
将给定的表达式绑定到元素的值。
它还可以用于将给定的表达式实现单向绑定到输入元素(如
input[text]
或textarea
),当该元素不使用ngModel
时。
相反,应从控制器初始化该值:
ng-value
指令绑定的变量发生更改也不会更新由 ng-model
指令绑定的变量。只有当用户点击或选择该单选按钮时,ng-value
才会更新其绑定的变量。 - georgeawgng-model
指令会忽略 AngularJS 框架对被 ng-value
指令绑定的变量所做的更改。ng-model
指令只对用户输入进行反应。 - georgeawg
ngValue
是单向绑定,而ngModel
是双向绑定。 - Michael R