How to bind 2 models to one input field in Angular?

后端 未结 4 1946
南笙
南笙 2020-11-30 21:59

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

相关标签:
4条回答
  • 2020-11-30 22:38

    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}}" />

    0 讨论(0)
  • 2020-11-30 22:39

    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.

    0 讨论(0)
  • 2020-11-30 22:43

    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'}">
    
    0 讨论(0)
  • 2020-11-30 22:57

    You cannot, but there are some workarounds.

    1. Use ngChange to update the other model

    <input type="text" 
           ng-model="sn_number" 
           ng-change="id=sn_number"/> 
    

    2. You could watch a model, and when in changes, update another

    $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

    0 讨论(0)
提交回复
热议问题