Насколько я понял, ng-model устанавливает значение для этого конкретного элемента, в котором была назначена модель. учитывая, что как ng-значение отличается от ng-модели?
Какая разница/несовместимость между ng-моделью и ng-значением?
Ответ 1
Он работает в сочетании с ng-model; для радиоприемников и выборок это значение, которое задано в ng-модели, когда этот элемент выбран. Используйте его как альтернативу атрибуту "значение" элемента, который всегда будет хранить строковое значение для соответствующей ng-модели.
В контексте переключателей он позволяет использовать нестрочные значения. Например, если у вас есть переключатели "Да" и "Нет" (или эквивалент) со значениями "true" и "false" - если вы используете "значение", значения, сохраненные в вашей ng-модели, станут строками. Если вы используете "ng-value", они будут оставаться booleans.
Однако в контексте элемента select обратите внимание, что значение ng всегда будет рассматриваться как строка. Чтобы установить нестрочные значения для выбора, используйте ngOptions.
Ответ 2
Простое описание
ng-model
- Используется для двусторонней привязки переменной, которая может быть доступна как по области видимости, так и по html.
- который имеет
$modelValue(значение находится в действительной области) и$viewValue(значение отображается в представлении). - Если вы указали в форме с атрибутом name, тогда angular внутренне создает для него атрибуты проверки как $error, $valid, $invalid и т.д.
Eg.
<input type="text/checkbox/radio/number/tel/email/url" ng-model="test"/>
ng-value
- Используется для присвоения значения соответствующему значению
ng-model, напримерinput,selectиtextarea(то же самое можно сделать, используяng-init) -
ng-valueдействительно обеспечивает хорошее связывание, если вы устанавливаете значениеng-modelчерез ajax, а атрибутvalueне поддерживает его - В основном используется для тегов
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>
...
Ответ 3
Хорошее использование для полей 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 останется нетронутым.
Ответ 4
В соответствии с https://docs.angularjs.org/api/ng/directive/ngValue, ngValue принимает выражение angular, значение которого будет привязано к атрибуту value входного элемента ".
Итак, когда вы используете ng-value = "hard", оно интерпретируется как выражение, а значение привязано к $scope.hard(что, вероятно, undefined). ngValue полезен для оценки выражений - он не имеет преимущества перед значением для установки жестко заданных значений. Тем не менее, если вы хотите жестко закодировать значение с помощью ngValue, вы должны заключить его в '::
нг-value = "'жесткий'"
ng-model предназначена для размещения внутри элементов формы и имеет двустороннюю привязку данных ($ scope → view and view → $scope), например. <input ng-model="val"/>.
или вы можете сказать, что директива ng-model связывает значение элементов управления HTML (ввода, выбора, textarea) с данными приложения.
Ответ 5
В документации четко указано, что ng-value не следует использовать при выполнении двустороннего связывания с ng-model.
Из документов:
ngValue
Привязывает данное выражение к значению элемента.
Он также может быть использован для достижения односторонней привязки данного выражения к элементу ввода, такому как
input[text]илиtextarea, , когда этот элемент не используетngModel.
Вместо этого инициализируйте значение из контроллера: