quel est la différence entre ng et ng-valeur

Que j'ai compris ng-modèle définit la valeur de cet élément particulier dans lequel le modèle est affecté. étant donné que la valeur ng est-elle différente du modèle ng?

31
demandé sur Divya MV 2015-02-25 14:12:26

4 réponses

Cela fonctionne en conjonction avec ng-model; pour les radios et les sélections, c'est la valeur qui est définie sur ng-model lorsque cet élément est sélectionné. Utilisez-le comme une alternative à l'attribut 'value' de l'élément, qui stockera toujours une valeur de chaîne dans le modèle ng associé.

Dans le contexte des boutons radio, il vous permet d'utiliser des valeurs non-chaîne. Par exemple, si vous avez les boutons radio 'Oui' et 'Non' (ou équivalent) avec les valeurs "true" et "false" - si vous utilisez la "valeur", les valeurs stocké dans votre modèle ng deviendra des chaînes. Si vous utilisez 'ng-value', ils resteront booléens.

Dans le contexte d'un élément select, notez cependant que la valeur ng sera toujours traitée comme une chaîne. Pour définir des valeurs non-chaîne pour une sélection, utilisez ngOptions.

23
répondu JcT 2015-02-25 11:26:06

Description Simple

Ng-modèle

  1. est utilisé pour la liaison bidirectionnelle de variable qui peut être disponible sur scope ainsi que sur html.
  2. qui a $modelValue(valeur réside dans la portée réelle) & $viewValue (valeur affichée sur l'affichage).
  3. Si vous avez mentionné sur le formulaire avec l'attribut name, angular crée en interne des attributs de validation comme $error, $valid, $invalid, etc.

Par exemple.

<input type="text/checkbox/radio/number/tel/email/url" ng-model="test"/>

Valeur Ng

  1. Est utilisé pour attribuer une valeur à chacun de ng-model comme input, select & textarea(la même chose peut être fait en utilisant ng-init)
  2. ng-value fournit une bonne liaison Si vous définissez la valeur ng-model via ajax tout en écrivant l'attribut value ne le supporte pas
  3. essentiellement destiné à utiliser pour radio & option balise lors de la création dynamique des options select.
  4. Il ne peut avoir que string la valeur, il ne supporte pas l'objet valeur.

HTML

<input
  [ng-value="string"]>
...
</input>

OU

<select ng-model="selected">
  <option ng-value="option.value" ng-repeat="option in options">
     {{option.name}}
  </option>
</select>

...

13
répondu Pankaj Parkar 2015-09-02 06:12:34

Une bonne utilisation pour ng-value dans les champs input est si vous voulez lier à une variable, mais en fonction de la valeur d'une autre variable. Exemple:

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

Lorsque l'utilisateur tape dans le input, la valeur du titre sera mis à jour. Si vous ne voulez pas cela, vous pouvez modifier pour:

<input type="text" ng-value="model.code" ng-bind="model.theNewCode" />

theNewCode sera mis à jour, mais code restera intact.

3
répondu Marcos Lima 2016-07-28 17:51:43

Selon le https://docs.angularjs.org/api/ng/directive/ngValue, ngValue prend une "expression angulaire, dont la valeur sera liée à l'attribut value de l'élément d'entrée".

Ainsi, lorsque vous utilisez ng-valeur="dur", il est interprété comme une expression et la valeur est liée à $champ d'application.dur (ce qui est probablement indéfini). ngValue est utile pour évaluer les expressions - il n'a aucun avantage sur la valeur pour définir des valeurs codées en dur. Pourtant, si vous voulez coder en dur une valeur avec ngValue, vous devez l'entourer de":

Ng-value="'dur'"

Ng-model est destiné à être placé dans des éléments de formulaire et a une liaison de données bidirectionnelle ($scope - > view et view - > $ scope) par exemple <input ng-model="val"/>.

Ou vous pouvez dire que la directive ng-model lie la valeur des contrôles HTML (input, select, textarea) aux données de l'application.

2
répondu ubaid ashraf 2015-02-25 11:22:26