Как привязать 2 модели к одному входному полю в Angular?


есть ли в любом случае, что я могу привязать два значения модели к одному полю ввода?

Предположим, у меня есть поле ввода, которое я хочу быть значением двух переменных в области видимости что-то вроде:

<input type="text" model="sn_number; id" > 
4 66

4 ответа:

нельзя, но есть некоторые обходные пути.

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 Если вы хотите, чтобы держать их в синхронизации.

пример

вы можете привязать поля сразу, а не только в ng-change, и на самом деле это не привязка данных, его единственное угловое выражение

  <label>Name</label>
  <input type="text" ng-model="name" value="{{name}}"/>

  <label>Key</label>
  <input type="text" ng-model="key" value="{{key=name}}" />

было бы бессмысленно привязывать входные данные к двум переменным в модели. Привязка работает в обоих направлениях, поэтому при обновлении модели поле обновляется и наоборот. Если бы Вы были привязаны к двум переменным, что было бы единственным источником истины?

однако вы можете использовать ng-change для вызова метода на контроллере, который может установить две переменные при изменении поля.

С 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'}">