it-swarm.com.ru

В чем разница / несовместимость между ng-моделью и ng-значением?

Насколько я понял, ng-model устанавливает значение для того конкретного элемента, которому назначена модель. учитывая, что чем ng-значение отличается от ng-модели?

36
Divya MV

Работает в сочетании с ng-моделью; для радиоприемников и селекторов это значение, которое устанавливается для ng-модели при выборе этого элемента. Используйте его как альтернативу атрибуту 'value' элемента, который всегда будет хранить строковое значение для связанной ng-модели.

В контексте переключателей это позволяет вам использовать не строковые значения. Например, если у вас есть переключатели "Да" и "Нет" (или эквивалентные) со значениями "истина" и "ложь" - если вы используете "значение", значения, сохраненные в вашей ng-модели, станут строками. Если вы используете 'ng-value', они останутся логическими значениями.

Однако в контексте элемента select обратите внимание, что значение ng по-прежнему будет всегда рассматриваться как строка. Чтобы установить нестроковые значения для выбора, используйте ngOptions.

26
JcT

Простое описание

нг-модель

  1. Используется для двухстороннего связывания переменной, которая может быть доступна как в области видимости, так и в формате HTML.
  2. который имеет $modelValue (значение находится в фактической области видимости) & $viewValue (значение отображается при просмотре).
  3. Если вы упомянули в форме с атрибутом имени, то angular внутренне создает для него атрибуты проверки, такие как $ error, $ valid, $ invalid и т.д.

Например.

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

нг-значение

  1. Используется для присвоения значения соответствующему ng-model значение типа input, select & textarea (то же самое можно сделать с помощью ng-init)
  2. ng-value обеспечивает хорошее связывание, если вы настраиваете ng-model значение через ajax при записи атрибута value не поддерживает его
  3. В основном предназначен для использования тега radio & option при динамическом создании параметров select.
  4. Он может иметь только значение 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>

...

13
Pankaj Parkar

Хорошее использование для ng-value в полях input, если вы хотите связать переменную, но на основе значения другой переменной. Пример:

<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 останется нетронутым.

3
Marcos Lima

Согласно https://docs.angularjs.org/api/ng/directive/ngValue , ngValue принимает " угловое выражение, значение которого будет связано с атрибутом значения входного элемента ".

Поэтому, когда вы используете ng-value = "hard", оно интерпретируется как выражение, а значение привязывается к $ scope.hard (который, вероятно, не определен). ngValue полезен для оценки выражений - он не имеет преимущества перед значением для установки жестко закодированных значений. Тем не менее, если вы хотите жестко закодировать значение с помощью ngValue, вы должны заключить его в '':

нг-значение = "" жесткий"

ng-модель предназначена для размещения внутри элементов формы и имеет двустороннюю привязку данных ($ scope -> view and view -> $ сфера) например <input ng-model="val"/>.

или вы можете сказать, что директива ng-model связывает значение элементов управления HTML (input, select, textarea) с данными приложения.

2
ubaid ashraf

В документации четко указано, что ng-value не следует использовать при выполнении двустороннего связывания с ng-model.

Из документов:

ngValue

Привязывает данное выражение к значению элемента.

Его также можно использовать для достижения односторонней привязки данного выражения к элементу ввода, такому как input[text] или textarea, , когда этот элемент не использует ngModel.

- AngularJS ng-value Директива API Reference

Вместо этого инициализируйте значение из контроллера:

0
georgeawg