2016-05-25 8 views
0

in normaler html-form zu behandeln, senden Sie ein Formular und Sie haben Zugriff auf Array von Kontrollkästchen in Server-Seite, aber in eckigen gibt es keine Form nach, und wir haben Ansicht Modell, was wir habenwie mit checked checkbox in angularjs

hier ist mein Kontrollkästchen in ng-Wiederholungsschleife

 <tr ng-repeat="meeting in vm.meetings" class="odd gradeX"> 
     <td> 
      <input type="checkbox" class="group-checkable icheck" ng-click="vm.selectMeeting(meeting)"/> 
     </td> 

zu tun ist, Id der ausgewählten Objekte auf Serverseite Methode zu schreiben, hier ist, wie normalerweise ausgewählte Kontrollkästchen für die Batch-Betrieb verarbeiten und hier ist meine Funktion in angularjs Controller

function selectMeeting(meeting) { 
     var index = -1; 

//check to see if user has check or uncheckd the check box 
     for (var i = 0; i < vm.meetingSelected.length; i++) { 

      if (vm.meetingSelected[i].indexOf(meeting.id) > -1) { 
       index = i; 
      } 

     } 
//if checked add it to vm.meetingSelected array 
     if (index == -1) { 
      vm.meetingSelected.push(meeting.id) 
     } 


//if unchecked remove it form vm.meetingSelected array 
     else { 
      vm.meetingSelected.splice(index, 1); 
     } 

    } 

Ich mag diesen Code nicht wirklich, ich denke, es sollte einen besseren Weg geben, das Kontrollkästchen checked in angularjs zu aktivieren.

ein Vorschlag für eine bessere Art und Weise, Kontrollkästchen in angularjs zu behandeln? danke

Antwort

2

Sie können ngModel mit Kontrollkästchen verwenden.

<input type="checkbox" ng-model="vm.meetingSelected[$index]" /> 

Sie können in $index oder ein beliebiges Objekt übergeben, die den Überblick über Ihre ngRepeat hält. Alles hängt vom Kontext ab.

Vielleicht ....

<input type="checkbox" ng-model="vm.meetingSelected[meeting.name]" /> 
<input type="checkbox" ng-model="vm.meetingSelected[meeting.id]" /> 

Also, wenn Sie bereit sind, Ihr Modell zu verarbeiten:

//only grab the selected meetings === true 
for(var key in vm.meetingSelected) { 
    if(vm.meetingSelected[key] === true) 
     mySelectedMeetings.push(vm.meetingSelected[key]); 
} 

Oder .... das Ganze passieren und Backend nehmen lassen Pflege Ergreifung nur der true ausgewählten Meetings.

+0

dies funktioniert nicht, da es ausgewählte Besprechung nicht aus vm.meetingSelected entfernt, wenn Benutzer das Kontrollkästchen deaktivieren, es nur seinen Wert auf false – Arash

+0

$ index setzen? Ich möchte übergeben, wenn ID des ausgewählten Treffens. – Arash

+0

Wie sieht dein Modell aus? – Kyle

Verwandte Themen