web-dev-qa-db-fra.com

Plusieurs ng-modèles sur un champ de saisie?

J'ai un formulaire et une liste d'articles. J'ai utilisé ng-model="searchFor" pour filtrer la liste des éléments de manière appropriée (cette partie fonctionne bien), mais je souhaite également "soumettre" l'élément filtré - ce qui nécessiterait ng-model="adding_item.name" sur le champ de saisie également (je pense).

Pouvez-vous avoir plusieurs ng-models sur un champ de saisie? Y a-t-il une autre solution?

14
bjorkland

Essayez d'utiliser l'événement ng-change pour capturer la valeur du modèle et l'affecter à un autre élément d'entrée avec son propre modèle ng.

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app>
  <input type="text" ng-model="input" ng-change="input1=input;input2=input; " />
  <input type="hidden" ng-model="input1" />
  <input type="hidden" ng-model="input2" />
  <br>Model
  <br>{{input | uppercase}}
  <br>Model 1
  <br>{{input1 | uppercase}}
  <br>Model 2
  <br>{{input2 | uppercase}}
</div>
11

Non, ngModel n'était pas censé faire des choses comme ça, à ce stade, il est préférable de commencer à déplacer la logique de la vue. Pour ce scénario, vous pouvez utiliser l'option getterSetter:

https://docs.angularjs.org/api/ng/directive/ngModel#binding-to-a-getter-setter

Il est difficile de faire des suggestions substantielles sans voir le code.

6
Estus Flask