Как связать 2 модели с одним полем ввода в Angular?
В любом случае, я могу привязать два значения модели к одному полю ввода?
Предположим, что у меня есть поле ввода, которое я хочу быть значением двух переменных в области видимости:
<input type="text" model="sn_number; id" >
Ответы
Ответ 1
Вы не можете, но есть некоторые способы обхода.
1. Используйте ngChange для обновления другой модели
<input type="text"
ng-model="sn_number"
ng-change="id=sn_number"/>
2. Вы можете посмотреть модель, а когда в процессе изменений обновите еще один
$scope.$watch('sn_number', function(v){
$scope.id = v;
});
Вам нужно будет также следить за изменениями в id
, если вы хотите синхронизировать их.
Пример здесь
Ответ 2
Вы можете привязывать поля немедленно, а не только в ng-change и фактически это не привязка данных, а только выражение angular
<labael>Name</labael>
<input type="text" ng-model="name" value="{{name}}"/>
<labael>Key</labael>
<input type="text" ng-model="key" value="{{key=name}}" />
Ответ 3
Нет смысла связывать входные данные с двумя переменными в модели. Связывание работает в обоих направлениях, поэтому, если модель обновлена, поле обновляется и наоборот. Если бы вы связывались с двумя переменными, каков был бы единственный источник истины?
Однако вы можете использовать ng-change для вызова метода на контроллере, который может устанавливать две переменные при изменении поля.
Ответ 4
с ng-init
<div ng-controller="ctrl" ng-init="model = { year: '2013', month:'09'}">
или
<div ng-repeat="c in contact" ng-init="likes = { food: 'steak', drink:'coke'}">