2016-04-26 4 views
1

Ich bekomme Daten aus der DB mit PHP, um es in einer Form in HTML verfügbar zu machen. Die li-Elemente in etwa so aussehenCollect Array aus HTML mit eckigen

<input type="checkbox" ng-model="check_list[i]" id="i" value="something"> 

Natürlich ist der „i“ mit einer Nummer in der aktuellen HTML ersetzt wird, so können die Elemente zum Beispiel check_list[1], id=[1] und so weiter ...

Wie kann ich nun auf diese ng-Modelle im Controller zugreifen? Ich möchte über alle bestehendencheck_list[i] Elemente (es sollte nicht hardcodiert werden, welche Elemente existieren, ich möchte es generisch lassen), und sammle sie, um alle überprüften Elemente zurück zum PHP-Skript zu senden, um es in der db zu speichern . Also versuche ich so etwas.

submitForm.insertData = function(){ 
     var check_list_elements = []; 
     for(var i = 1; i <= 83; i++) { 
      //add only those ng-models check_list[i], that really exist into check_list_elements 
      if ($scope.check_list[i] !== undefined){ 
       $check_list_elements.push($scope.check_list[i]); 
      } 
     } 

Aber ich bekomme immer wieder

Cannot read property '1' of undefined at t.insertData 

So $scope.check_list[i] ist offensichtlich falsch.

Wie wird es richtig gemacht?

Antwort

0

Ich denke, ohne zu überprüfen, Kontrollkästchen $ scope.check_list ist undefiniert, so können Sie nicht Property 1 von undefined. $ Scope.check_list in Ihrem Controller definieren, wenn der Controller initialisieren oder beim Einchecken in submitForm.insertData Funktion vor itarate

submitForm.insertData = function(){ 
     var check_list_elements = []; 
     if($scope.check_list){ 
      for(var i = 1; i <= 83; i++) { 
      //add only those ng-models check_list[i], that really exist into check_list_elements 
       if ($scope.check_list[i] !== undefined){ 
       $check_list_elements.push($scope.check_list[i]); 
       } 
      } 

     }