私が理解している限り、ng-modelはモデルが割り当てられている特定の要素の値を設定します。 ng-valueはng-modelとどのように違うのでしょうか?
Ng-modelと連動します。無線および選択の場合、その項目が選択されたときにng-modelに設定される値です。要素の「value」属性の代替として使用します。これは、関連付けられたngモデルに常に文字列値を保存します。
ラジオボタンのコンテキストでは、非文字列値を使用できます。たとえば、値が「true」と「false」のラジオボタン「Yes」と「No」(または同等)がある場合-「value」を使用すると、ng-modelに保存される値は文字列になります。 「ng-value」を使用すると、ブール値のままになります。
ただし、select要素のコンテキストでは、ng-valueは常に文字列として扱われることに注意してください。選択に文字列以外の値を設定するには、ngOptionsを使用します。
簡単な説明
ng-model
$modelValue
(値は実際のスコープ内にあります)&$viewValue
(ビューに表示される値)を持ちます。例
<input type="text/checkbox/radio/number/tel/email/url" ng-model="test"/>
ng-value
input
、select
、textarea
などのそれぞれのng-model
値に値を割り当てるために使用されます(ng-init
を使用して同じことができます)ng-value
は、value
属性の書き込みがサポートしていないときに、ajaxを介してng-model
値を設定している場合、適切なバインディングを提供します。radio
オプションを動的に作成するときに、基本的に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>
...
input
フィールドでng-value
を使用するのは、変数にバインドしたいが、別の変数の値に基づいている場合です。例:
<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
は変更されません。
https://docs.angularjs.org/api/ng/directive/ngValue 、ngValueによれば、入力要素のvalue属性に値がバインドされる角度式」。
したがって、ng-value = "hard"を使用すると、式として解釈され、値は$ scope.hard(おそらく未定義)にバインドされます。 ngValueは式を評価するのに便利です-ハードコードされた値を設定する値よりも利点はありません。ただし、ngValueを使用して値をハードコーディングする場合は、値を ''で囲む必要があります。
ng-value = "'hard'"
ng-modelはフォーム要素の内部に配置することを目的としており、双方向のデータバインディング($ scope-> view and view-> $スコープ)例<input ng-model="val"/>.
または、ng-modelディレクティブは、HTMLコントロール(入力、選択、テキスト領域)の値をアプリケーションデータにバインドします。
ドキュメントには、ng-value
とtwo-wayバインディングを行うときにng-model
を使用すべきでないことが明確に記載されています。
ドキュメントから:
ngValue
指定された式を要素の値にバインドします。
また、特定の式を
input[text]
やtextarea
などの入力要素に一方向バインディングするために使用することもできますその要素が使用しない場合ngModel
。
代わりに、コントローラーからの値を初期化します。