Is there anyway that I can bind two model values to one input field?
Suppose I have input field which I want to be the value of two variables in the scope something
You can bind fields immediately, not only in ng-change, and actually it isn't data binding, its only angular expression
<label>Name</label>
<input type="text" ng-model="name" value="{{name}}"/>
<label>Key</label>
<input type="text" ng-model="key" value="{{key=name}}" />
It would make no sense to bind an input to two variables in the model. Binding works both ways, so if the model is updated, the field is updated and vice-versa. If you were to bind to two variables, what would be the single source of truth?
However you can use ng-change to call a method on the controller which can set two variables when the field changes.
with ng-init
<div ng-controller="ctrl" ng-init="model = { year: '2013', month:'09'}">
or
<div ng-repeat="c in contact" ng-init="likes = { food: 'steak', drink:'coke'}">
You cannot, but there are some workarounds.
<input type="text"
ng-model="sn_number"
ng-change="id=sn_number"/>
$scope.$watch('sn_number', function(v){
$scope.id = v;
});
You would need to watch also for changes in id
if you want to keep them in sync.
Example here