в чем разница между ng-model и NG-value

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

4 ответов


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

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

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


Краткое Описание

НГ-модель

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

например.

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

ng-значение

  1. используется для присвоения значения соответствующих ng-model значение input, select & textarea(то же самое можно сделать с помощью ng-init)
  2. ng-value обеспечивает хорошую привязку, если вы устанавливаете ng-model значение через AJAX при написании value атрибут не поддерживает его
  3. в основном предназначен для использования для radio & option тег а создание select динамически вариантов.
  4. он может иметь только string value it, он не поддерживает значение объекта.

HTML-код

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

или

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

...


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


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

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

ng-value= "'hard'"

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

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