Как связать 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'}">