2016-05-16 9 views
1

Ich habe einen angular.js-Code, der ein Array auffüllt, wenn ein Benutzer auf einige Kontrollkästchen klickt. Ich erzeuge eine Liste von Kontrollkästchen mit einer 'ng-Wiederholung' und ich muss ein Array auf der Serverseite speichern, wenn ein Benutzer ein Formular einreicht. Ich habe diesen Code und es funktioniert .. fiddle here.. Allerdings werden die Checkboxen nicht "überprüft" bleiben? Hat jemand einen Rat, wie man diesen UI-Fehler beheben kann?Eckige Kontrollkästchen werden nicht überprüft?

html

<div ng-controller="MyCtrl"> 

     <div class="col-sm-6"> 
      <div class="form-group"> 
       <label>Search by Organism :</label> 
       <input type="text" class="form-control" placeholder="Organism" ng-model="filterText"> 
      </div> 
      <div class="well" style="max-height: 250px; overflow: auto;"> 
       <ul class="list-group checked-list-box" ng-repeat="x in organisms | filter: filterText"> 
        <label> 
         <input type="checkbox" ng-change="match($index)" ng-model="orgs[$index]"> {{ x }} 
        </label> 
       </ul> 
      </div> 
     </div> 

    </div> 

Winkel

var myApp = angular.module('myApp',[]); 

function MyCtrl($scope) { 
    $scope.orgs = []; 
     $scope.match = function(index) { 
      console.log("index", index); 
      console.log("organism: ", $scope.organisms[index]); 
      $scope.orgs[index] = $scope.organisms[index]; 
     }; 

     $scope.organisms = ["Pseudomonas aeruginosa", "Stenotrophomonas maltophilia", "Pseudomonas luteola", "Pseudomonas aeruginosa", "Streptococcus pneumoniae", "Candida tropicalis", "IAV-H1N1", "IAV-H1N2", "IAV-H3N2", "IAV-mixed", "IAV-H10N8", "IAV-H2N2", "IAV-H5N1", "IAV-H5N6", "IAV-H7N3", "IAV-H7N7", "IAV-H7N9", "IAV-H9N2"]; 


} 

Antwort

0

Kommentar aus der Linie

$scope.orgs[index] = $scope.organisms[index] 

Dies das Array verhindern wird überschrieben werden.


VERBESSERUNG

Ich habe die Geige aktualisiert. Sie können nicht auf die Kontrollkästchen klicken und die Werte in einem anderen Array speichern. Am besten verwenden Sie dazu den Array-Prototyp push. Ihre neue Match-Funktion ist unten.

$scope.match = function(orgName) { 
    var index= $scope.selection.indexOf(orgName); 
    if (index> -1) { 
     $scope.selection.splice(index, 1); 
    } 
    else { 
     $scope.selection.push(orgName); 
    } 
}; 

Außerdem haben die Kontrollkästchen eine Eigenschaft namens value. Dies kann als Platzhalter für Ihre Daten verwendet werden.

Updated fiddle

Wenn das ist, was Sie wollen, markieren Sie bitte die Antwort als angenommen.

+0

Wie würde ich ein Array zum Speichern füllen? Ich brauche diese Zeile, um das Array der Organisation zu füllen, wenn der Benutzer ein Formular einreicht. –

+0

auch du Geige ist leer – Wcan

+0

die Geige repariert, danke für die Köpfe –

Verwandte Themen