в чем разница между ng-model и NG-value
насколько я понял, ng-model устанавливает значение для того конкретного элемента, в котором назначена модель. учитывая это, как ng-значение отличается от NG-модели?
4 ответов
оно работает совместно с ng-моделью; для радио и выбирает, значение которое установлено к ng-модели когда этот деталь выбран. Используйте его как альтернативу атрибуту "value" элемента, который всегда будет хранить строковое значение для связанной ng-модели.
в контексте переключателей он позволяет использовать нестроковые значения. Например, если у вас есть переключатели " да " и " нет "(или эквивалент) со значениями "true" и "false" - если вы используете "value", значения, сохраненные в вашей ng-модели, станут строками. Если вы используете 'ng-value', они останутся логическими.
в контексте элемента select, однако, обратите внимание, что ng-значение по-прежнему всегда будет рассматриваться как строка. Чтобы задать нестроковые значения для select, используйте ngOptions.
Краткое Описание
НГ-модель
- используется для двухсторонней привязки переменной, которая может быть доступна как в области, так и в html.
- имеющего
$modelValue
(значение находится в фактической области)&$viewValue
(значение отображается в представлении). - если вы упомянули в форме с атрибутом name, то angular внутренне создает атрибуты проверки для него, такие как $error, $valid, $invalid так далее.
например.
<input type="text/checkbox/radio/number/tel/email/url" ng-model="test"/>
ng-значение
- используется для присвоения значения соответствующих
ng-model
значениеinput
,select
&textarea
(то же самое можно сделать с помощьюng-init
) -
ng-value
обеспечивает хорошую привязку, если вы устанавливаетеng-model
значение через AJAX при написанииvalue
атрибут не поддерживает его - в основном предназначен для использования для
radio
&option
тег а созданиеselect
динамически вариантов. - он может иметь только
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) с данными приложения.