Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie binde ich AngularJS-Kontrollkästchen an eine Werteliste?

Linda Hamilton
Freigeben: 2024-11-24 17:33:14
Original
481 Leute haben es durchsucht

How to Bind AngularJS Checkboxes to a List of Values?

AngularJS-Kontrollkästchen an Werteliste binden

Problem:

In AngularJS wird eine Liste von Kontrollkästchen angezeigt und Ziel ist es, eine Verbindung zwischen ihnen und einer Liste im Controller herzustellen. Jedes aktivierte Kontrollkästchen zeigt die Aufnahme des zugehörigen Werts in die Liste an.

Lösung:

AngularJS bietet zwei praktikable Lösungen für dieses Problem:

< ;h3>1. Einfaches Array als Eingabedaten

Bei diesem Ansatz ahmt die HTML-Struktur die Kontrollkästchenliste nach:

<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>
Nach dem Login kopieren

Der zugehörige Controller-Code übernimmt die Interaktion:

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

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

  // Selected fruits
  $scope.selection = ['apple', 'pear'];

  // Toggle selection for a given fruit by name
  $scope.toggleSelection = function toggleSelection(fruitName) {
    var idx = $scope.selection.indexOf(fruitName);

    if (idx > -1) {
      $scope.selection.splice(idx, 1);
    } else {
      $scope.selection.push(fruitName);
    }
  };
}]);
Nach dem Login kopieren

2. Objektarray als Eingabedaten

Die Verwendung eines Objektarrays als Eingabedaten erhöht die Komplexität, vereinfacht aber Einfüge- und Löschvorgänge:

<label ng-repeat="fruit in fruits">
  <input
    type="checkbox"
    name="selectedFruits[]"
    value="{{fruit.name}}"
    ng-model="fruit.selected"
  > {{fruit.name}}
</label>
Nach dem Login kopieren

Der Controller-Code spiegelt die Änderung wider:

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

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

  // Selected fruits
  $scope.selection = [];

  // Helper method to get selected fruits
  $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);
}]);
Nach dem Login kopieren

Vorteile und Nachteile:

  • Einfaches Array:

    • Einfache Datenstruktur
    • Einfaches Umschalten nach Namen
    • Allerdings umständliches Einführen und Löschen
  • Objektarray:

    • Komplexere Datenstruktur
    • Umschalten nach Namen erfordert Hilfsmethoden
    • Das Einfügen und Löschen ist jedoch sehr schwierig einfach

Demo: http://jsbin.com/ImAqUC/1/

Das obige ist der detaillierte Inhalt vonWie binde ich AngularJS-Kontrollkästchen an eine Werteliste?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage