qual a diferença entre ng-model e ng-value?

Tanto quanto eu entendi ng-modelo define o valor para esse elemento particular em que o modelo é atribuído. dado que como o valor ng é diferente do modelo ng?

Trabalha em conjunto com o ng-model; para rádios e selects, é o valor que é definido para o ng-model quando esse item é selecionado. Use-o como uma alternativa ao atributo ‘value’ do elemento, que sempre armazenará um valor de string para o modelo ng associado.

No contexto de botões de opção, permite usar valores não-string. Por exemplo, se você tiver os botões de opção ‘Sim’ e ‘Não’ (ou equivalente) com os valores ‘true’ e ‘false’ – se você usar ‘value’, os valores armazenados em seu ng-model se tornarão strings. Se você usar ‘ng-value’, eles permanecerão booleanos.

No contexto de um elemento select, no entanto, observe que o valor ng ainda será sempre tratado como uma string. Para definir valores não-string para uma seleção, use ngOptions.

Descrição simples

ng-model

  1. É usado para binding bidirecional da variável que pode estar disponível no escopo, bem como no html.
  2. que tem $modelValue (o valor reside no escopo real) & $viewValue (valor exibido na exibição).
  3. Se você mencionou no formulário com o atributo name, então, o angular cria internamente atributos de validação para ele, como $ error, $ valid, $ invalid etc.

Por exemplo.

  

ng-value

  1. É usado para atribuir valor ao respectivo valor do ng-model como input , select & textarea (o mesmo pode ser feito usando ng-init )
  2. ng-value fornece uma boa binding se você está configurando o valor do ng-model meio do ajax enquanto o atributo de value gravação não o suporta
  3. Basicamente significava usar para tag de radio e option ao criar opções de select dinamicamente.
  4. Ela só pode ter valor de string , não suporta valor de object.

HTML

  ...  

OU

  

Um bom uso para ng-value nos campos de input é se você deseja vincular a uma variável, mas com base no valor de outra variável. Exemplo:

 

The code is {{model.code}}.

Set the new code:

Quando o usuário digita a input , o valor no título será atualizado. Se você não quiser isso, você pode modificar para:

  

theNewCode será atualizado, mas o code permanecerá intacto.

De acordo com o https://docs.angularjs.org/api/ng/directive/ngValue , ngValue recebe uma “expressão angular, cujo valor será vinculado ao atributo value do elemento input”.

Então, quando você usa ng-value = “hard”, ele é interpretado como uma expressão e o valor é ligado a $ scope.hard (que provavelmente é indefinido). ngValue é útil para avaliar expressões – não tem vantagem sobre o valor para definir valores codificados. No entanto, se você quiser codificar um valor com ngValue, deverá colocá-lo em ”:

ng-value = “‘difícil'”

O ng-model destina-se a ser colocado dentro de elementos de formulário e possui binding de dados bidirecional ($ scope -> view e view -> $ scope), por exemplo, .

ou você pode dizer que a diretiva ng-model associa o valor dos controles HTML (input, select, textarea) aos dados do aplicativo.