如何将2个模型绑定到Angular中的一个输入字段?


73

无论如何,我可以将两个模型值绑定到一个输入字段吗?

假设我有一个输入字段,我想将其作为范围内两个变量的值,例如:

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

答案是不。但是更多信息将很有用,因此我们可以提供建议。
格雷格

Answers:


138

您不能,但是有一些解决方法。

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如果您想使它们保持同步,则还需要注意其中的变化。

这里的例子


3
仅供参考:之所以ng-modelng-change
可行,

11

您可以立即绑定字段,不仅可以在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}}" />


它实际上对我有用,但是您能解释为什么它起作用吗?为什么仅使用值=“ {{name}}”无效?
Gil404 '17

节省大量编写$ watch的工作:)
maruf571

7

将输入绑定到模型中的两个变量没有任何意义。绑定以两种方式起作用,因此,如果更新了模型,则字段也会更新,反之亦然。如果要绑定两个变量,那么真理的唯一来源是什么?

但是,您可以使用ng-change来调用控制器上的方法,该方法可以在字段更改时设置两个变量。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.