2016-12-11 4 views
0

Ich zeige die Ausgabeantwort (JSON) von der REST-API unter Verwendung von Angular JS an. Ich plane, Benutzer mit einer Option der Checkbox für jedes aufgeführtes Resultat und auch ein selectall/deselectall checkbox zur Verfügung zu stellen. Ich bin bei der Implementierung fest, wähle alles/wähle alle Implementierung ab, wie man das selectall/deselect alle Ankreuzfeld einführt und auch wie man das vorgewählte auswählt Checkbox Informationen und bilden ein JSON-Objekt aller Id ausgewählt .Ich würde es die Winkel Art und Weise zu tun, liebenAngular JS alle auswählen/De alle Kontrollkästchen auswählen, um ausgewählte Informationen abzurufen

das ist mein Controller-Aufruf

$http.post('http://localhost:8080/services/search/'+id+"", searchCriteria).then(function(response) { 
    $scope.searchresponse = response.data.items; 
    if($scope.searchresponse.length != 0){ 
     console.log($scope.searchresponse); 
    } 
    else { 
     $scope.showerror = true; 
     $scope.ErrorMsg ="There is no record matching your criteria." 
    } 
    }); 

Dies ist meine JSON Antwort von REST

{ 
    "items": [{ 
     "customerId": "ABC", 
     "type": "D" 
    }, { 
     "customerId": "DEF", 
     "type": "A" 
    }], 
    "more": false 
} 

Dies ist mein HTML

<tr ng-repeat="details in successresponse"> 
     <td align="left" class="validationMsg"> 
      <input type="checkbox" name="entireday" id="entireday"> 
      {{details.customerId}} 
      {{details.type}} 
     </td> 
    </tr> 

Ich möchte alle implementieren wählen/Option deaktivieren und die Kunden-IDs ausgewählt abrufen und ein JSON-Objekt

Antwort

1

bilden einen ausgewählten Bereich auf jeder der Suchantwort Artikel hinzufügen:

$http.post('http://localhost:8080/services/search/'+id+"", searchCriteria).then(function(response) { 

    if (response.data && response.data.items.length != 0) { 
     $scope.searchresponse = response.data.items.map(function (x) { 
      x.selected = false; 
      return x; 
     }); 
     console.log($scope.searchresponse); 
    } 
    else { 
     $scope.showerror = true; 
     $scope.ErrorMsg ="There is no record matching your criteria." 
    } 
}); 

Vorlage:

<tr ng-repeat="details in successresponse"> 
    <td align="left" class="validationMsg"> 
     <input type="checkbox" name="entireday" id="entireday" 
       ng-model="details.selected"> 
     {{details.customerId}} 
     {{details.type}} 
    </td> 
</tr> 

dann alle auszuwählen/de-se eln Sie alle, können Sie schreiben:

$scope.selectAll = function() { 
    angular.forEach($scope.searchresponse, function (x) { 
     x.selected = true; 
    }); 
} 

$scope.deselectAll = function() { 
    angular.forEach($scope.searchresponse, function (x) { 
     x.selected = false; 
    }); 
}; 

und die Werte zu erhalten, die ausgewählt wurden:

function getSelected() { 
    return $scope.searchresponse.filter(function (x) { 
     return x.selected; 
    }); 
} 

// alternative implementation 
var getSelected = [].filter.bind(
    $scope.searchresponse, 
    function (x) { return x.selected; }); 
+0

Warum müssen wir das Kontrollkästchen in der Steuerung eingestellt werden. Wie soll ich die GetSelected-Funktion aufrufen, um Werte innerhalb des Controllers abzurufen und ein JSON-Objekt zu bilden, das nur customerid enthält – Praveen

+0

Sie müssen das Kontrollkästchen im Controller initialisieren, da Sie dort den Anfangswert von Ihrem REST-Endpunkt erhalten. Sie können getSelected aufrufen, um die Elemente aus der Liste zu erhalten, die an dem Punkt ausgewählt wurden, an dem Sie sie benötigen. Wenn Sie beispielsweise einen anderen REST-Endpunkt aufrufen, können Sie einfach Folgendes tun: 'data = getSelected(). Map (function (x) {return x.customer_id;});' um nur die Kunden-IDs zu erhalten. Außerdem hatten Sie in Ihrem OP nur sehr wenig Code. Wenn Sie mehr Details wünschen, müssen Sie viel mehr Details bereitstellen. – 2ps

+0

Ich erhalte diesen Fehler, wenn ich versuche, den Wert abzurufen - Array.prototype.filter wurde auf null oder undefined – Praveen

Verwandte Themen