2017-05-30 4 views
0

Ich habe eine Tabelle in meinem HTML-Code, in dem die Zeilen von AngularJS ng-repeat generiert werden. Jede Zeile enthält ein Kontrollkästchen in der ersten Spalte und andere Daten in den entsprechenden Spalten. Ich versuche, alle Kontrollkästchen markiert zu markieren, wenn diese Schaltfläche angeklickt wird, die in einem anderen Teil vorhanden ist.Auswahl mehrerer Kontrollkästchen in Angular auf Schaltfläche klicken

<tbody> 
 
    <tr ng-repeat="row in myObject track by $index" ng-class-even="'alternate-row'"> 
 
    <td name="checkbox"> 
 
     <input type="checkbox" ng-model="row.checked" ng-style="row.checkboxStyle" ng-click="setSelectedRow(row)" /> 
 
    </td> 
 
    <td>{{ row.data1 }}</td> 
 
    <td>{{ row.data2 }}</td> 
 
    </tr> 
 
</tbody>

Der Knopf ist wie folgt:

<div class="btn-group"> 
 
\t <button type="button" id="selectAll" class="btn btn-default" title="Select All" ng-click="selectAllGrid()">Select All</button> 
 
</div>

Verfahren auf dem Klicken der Checkbox genannt wird, die auf ein Array, das bestimmte Zeile fügt . Wie wird diese Methode aufgerufen, wenn ich das Kontrollkästchen bei Klick auf die Schaltfläche markiert habe?

Antwort

2

verwenden die Richtlinie ng-checked

<tbody> 
    <tr ng-repeat="row in myObject track by $index" ng-class-even="'alternate-row'"> 
    <td name="checkbox"> 
     <input type="checkbox" ng-checked="checkAll" ng-model="row.checked" ng-style="row.checkboxStyle" ng-click="setSelectedRow(row)" /> 
    </td> 
    <td>{{ row.data1 }}</td> 
    <td>{{ row.data2 }}</td> 
    </tr> 
</tbody> 

und in Ihre Tastenfunktion

selectAllGrid(){ 
$scope.checkAll=true; 
} 
+0

es funktionierte. Danke Kumpel. Aber die Aktion, die ausgeführt wurde, als ich das Kontrollkästchen anklickte, passiert nicht. Auch nachdem ich das Kontrollkästchen manuell angeklickt habe, hört die Schaltfläche auf zu arbeiten und wählt nicht weiter aus. –

+0

bitte als richtige Antwort markieren –

2

Sie können wie folgt tun:

<table> 
    <tbody> 
     <tr ng-repeat="row in myObject track by $index" ng-class-even="'alternate-row'"> 
     <td name="checkbox"> 
      <input type="checkbox" ng-model="row.checked" ng-style="row.checkboxStyle" />{{row.checked}} 
     </td> 
     <td>{{ row.data }}</td> 
     </tr> 
    </tbody> 
    </table> 


    <div class="btn-group"> 
    <button type="button" id="selectAll" class="btn btn-default" title="Select All" ng-click="selectAllGrid()">Select All</button> 
    </div> 

und in Ihrem Controller:

app.controller('MainCtrl', function($scope) { 
    $scope.allchecked = false; 

    $scope.selectAllGrid = function(){ 
    console.log($scope.allchecked); 
    $scope.allchecked = !$scope.allchecked 
    for(var i =0; i<$scope.myObject.length; i++) { 
    $scope.myObject[i].checked = $scope.allchecked ; 
    } 
    } 

    $scope.myObject = [ 
     {"data": "sdfsdf"}, 
     {"data": "asdfassafs"}, 
     {"data": "asesfrsaedfsadfsadsd"} 
    ] 
}); 

Arbeitsrumpf here

+0

Danke. Es ist eine großartige Antwort. Aber wie rufe ich die Funktion/das Ereignis auf, das aufgerufen wurde, als ich das Kontrollkästchen physisch als markiert markiert habe? –

+0

Verstehe nicht. Kannst du das im Detail erklären? – SaiUnique

+0

Wenn ich manuell auf das Kontrollkästchen klicke, um es zu aktivieren/deaktivieren, wird ein Ereignis ausgelöst und ich rufe eine Methode in JS für dieses Ereignis auf. Ich befülle ein Array mit den Werten der Zeile, in der das Kontrollkästchen vorhanden war. Jetzt, wenn ich es mit einer Schaltfläche check/uncheck, wird diese Methode nicht auf Kontrollkästchen aktiviert/deaktiviert. –

Verwandte Themen