Maison > interface Web > js tutoriel > Comment lier efficacement les valeurs des cases à cocher à une liste dans AngularJS ?

Comment lier efficacement les valeurs des cases à cocher à une liste dans AngularJS ?

Linda Hamilton
Libérer: 2024-11-21 02:08:11
original
870 Les gens l'ont consulté

How to Efficiently Bind Checkbox Values to a List in AngularJS?

Liaison à une liste de valeurs de case à cocher dans AngularJS

Pour associer plusieurs valeurs de case à cocher à une liste dans le contrôleur, il existe deux approches principales : utilisant un tableau simple ou un tableau d'objets.

Utilisation d'un simple Tableau

Dans le HTML :

<label ng-repeat="fruitName in fruits">
  <input
    type="checkbox"
    name="selectedFruits[]"
    value="{{fruitName}}"
    ng-checked="selection.indexOf(fruitName) > -1"
    ng-click="toggleSelection(fruitName)"
  > {{fruitName}}
</label>
Copier après la connexion

Dans le contrôleur :

app.controller('SimpleArrayCtrl', ['$scope', function SimpleArrayCtrl($scope) {

  $scope.fruits = ['apple', 'orange', 'pear', 'naartjie'];
  $scope.selection = ['apple', 'pear'];

  $scope.toggleSelection = function toggleSelection(fruitName) {
    var idx = $scope.selection.indexOf(fruitName);
    idx > -1 ? $scope.selection.splice(idx, 1) : $scope.selection.push(fruitName);
  };
}]);
Copier après la connexion

Avantages :

  • Structure de données simplifiée
  • Basculement facile par name

Inconvénients :

  • Opérations d'ajout/suppression fastidieuses dues à la gestion de deux listes

Utiliser un tableau d'objets

Dans le HTML :

<label ng-repeat="fruit in fruits">
  <input
    type="checkbox"
    name="selectedFruits[]"
    value="{{fruit.name}}"
    ng-model="fruit.selected"
  > {{fruit.name}}
</label>
Copier après la connexion

Dans le contrôleur :

app.controller('ObjectArrayCtrl', ['$scope', 'filterFilter', function ObjectArrayCtrl($scope, filterFilter) {

  $scope.fruits = [
    { name: 'apple',    selected: true },
    { name: 'orange',   selected: false },
    { name: 'pear',     selected: true },
    { name: 'naartjie', selected: false }
  ];

  $scope.selection = [];

  $scope.selectedFruits = function selectedFruits() {
    return filterFilter($scope.fruits, { selected: true });
  };

  $scope.$watch('fruits|filter:{selected:true}', function (nv) {
    $scope.selection = nv.map(function (fruit) {
      return fruit.name;
    });
  }, true);
}]);
Copier après la connexion

Avantages :

  • Ajout/suppression facile opérations

Inconvénients :

  • Structure de données plus complexe
  • Lourd ou nécessite des méthodes d'assistance pour basculer par nom

Supplémentaire Notes :

  • Une démo en direct est disponible sur http://jsbin.com/ImAqUC/1/.
  • Sélectionnez les valeurs de case à cocher que vous souhaitez lier, et la liste correspondante dans le contrôleur sera mise à jour automatiquement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal