Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng模型和ng值之间有什么区别/不兼容?_Javascript_Angularjs_Angularjs Directive_Angularjs Ng Model_Angularjs Ng Value - Fatal编程技术网

Javascript ng模型和ng值之间有什么区别/不兼容?

Javascript ng模型和ng值之间有什么区别/不兼容?,javascript,angularjs,angularjs-directive,angularjs-ng-model,angularjs-ng-value,Javascript,Angularjs,Angularjs Directive,Angularjs Ng Model,Angularjs Ng Value,据我所知,ng模型为分配模型的特定元素设置值。 假设ng值与ng模型有何不同?根据,ngValue采用角度表达式,其值将绑定到输入元素的value属性 因此,当您使用ng value=hard时,它被解释为一个表达式,并且该值绑定到$scope.hard,这可能是未定义的。 ngValue对于计算表达式很有用-在设置硬编码值时,它比value没有优势。但是,如果要使用ngValue硬编码值,则必须将其包含在: ng value='hard' ng模型旨在放在表单元素中,并具有双向数据绑定$sco

据我所知,ng模型为分配模型的特定元素设置值。 假设ng值与ng模型有何不同?

根据,ngValue采用角度表达式,其值将绑定到输入元素的value属性

因此,当您使用ng value=hard时,它被解释为一个表达式,并且该值绑定到$scope.hard,这可能是未定义的。 ngValue对于计算表达式很有用-在设置硬编码值时,它比value没有优势。但是,如果要使用ngValue硬编码值,则必须将其包含在:

ng value='hard'

ng模型旨在放在表单元素中,并具有双向数据绑定$scope->view和view->$scope,例如


或者,您可以说ng模型指令将HTML控件的值input、select、textarea绑定到应用程序数据。

它与ng模型一起工作;对于Radio和selects,它是选择该项时设置为ng模型的值。将其用作元素的“value”属性的替代,该属性将始终向关联的ng模型存储字符串值

在单选按钮的上下文中,它允许您使用非字符串值。例如,如果您有单选按钮“Yes”和“No”或具有值“true”和“false”的等效按钮-如果您使用“value”,则存储在ng模型中的值将成为字符串。如果使用“ng value”,它们将保持布尔值

但是,在select元素的上下文中,请注意ng值仍将始终被视为字符串。要为select设置非字符串值,请使用ngOptions。

简单说明

ng模型

用于变量的双向绑定,可以在作用域上使用,也可以在html上使用。 其中$modelValuevalue位于实际范围内,而$viewValue值显示在视图上。 若您在表单中提到了name属性,那个么angular会在内部为它创建验证属性,比如$error、$valid、$invalid等等。 例如

。。。

输入字段中ng值的一个好用法是,如果您想绑定到一个变量,但基于另一个变量的值。例如:

<h1>The code is {{model.code}}.</h1>
<p>Set the new code: <input type="text" ng-bind="model.code" /></p>

新代码将被更新,但代码将保持不变。

文档明确指出,在与ng模型进行双向绑定时,不应使用ng值

从文档中:

ngValue 将给定表达式绑定到元素的值

当输入元素不使用ngModel时,它还可用于实现给定表达式与输入元素(如input[text]或textarea)的单向绑定

-


相反,从控制器初始化值:

我在寻找ng模型和ng值之间的差异。请注意,“ng值”确实比硬编码元素属性“值”有优势,因为您可以指定非字符串类型。例如,“true”和“false”将作为布尔值而不是字符串存储到模型中。此外,ngValue是单向绑定,ngModel是双向绑定。文档中并没有这样说。它说不要在文本或文本区域同时使用ng值和ng模型。对于单选,选中,选项,可以一起使用。即使是单选按钮,ng value指令绑定的变量的更改也不会更新ng model指令绑定的变量。ng值仅在用户单击或选择该单选按钮时更新其绑定变量。但这是出于设计。如果单选按钮的基础值发生更改,则应使用户的原始选择无效,而不是神奇地为他们选择它。试想一下在存款和存款之间转移的单选按钮。如果用户选择了存款以及UI如何将其更改为取款,这将是一个严重的问题。事实上,ng model指令忽略了AngularJS框架对ng value指令绑定的变量所做的更改。ng model指令仅对用户输入作出反应。
<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 type="text" ng-value="model.code" ng-bind="model.theNewCode" />