2016-04-27 5 views
0

Ich möchte eckige Anwendung erstellen, die Radio Button-Werte in der Datenbank in jedem On-Click-Ereignis speichern kann. In meiner vorherigen Anwendung habe ich php ajax verwendet, um es zu erstellen und gut zu arbeiten. Ich benutze das Codeigniter-Framework. Hier ist der Code:Wie Speichern Radio Button-Wert jedes Klick Ereignis in angularjs?

PHP und HTML-Code:

<form name="form" class="form" method="post" enctype="multipart/form-data" action="<?php echo base_url();?>mahasiswa/konfirmasi"> 
    <?php 
    $no=1; 
    foreach($hasil->result() as $h){ 
     foreach($co->result() as $c){ 
      $idrecord = $c->id_record; 
      $jwb = $c->jwb; 
     } 
    ?> 
<input type="radio" name="jawab<?php echo $h->id_soal;?>" value="A" <?php if($h->jwb=='A'){echo 'checked';}?> onClick="simjwb(<?php echo $h->id_record;?>,<?php echo $h->id_soal;?>,<?php echo $no;?>)"/>a.&nbsp;</div><?php echo $h->a;?> 
<input type="radio" name="jawab<?php echo $h->id_soal;?>" value="B" <?php if($h->jwb=='B'){echo 'checked';}?> onClick="simjwb(<?php echo $h->id_record;?>,<?php echo $h->id_soal;?>,<?php echo $no;?>)"/>b.&nbsp;</div><?php echo $h->b;?> 
<input type="radio" name="jawab<?php echo $h->id_soal;?>" value="C" <?php if($h->jwb=='C'){echo 'checked';}?> onClick="simjwb(<?php echo $h->id_record;?>,<?php echo $h->id_soal;?>,<?php echo $no;?>)"/>c.&nbsp;</div><?php echo $h->c;?> 
<?php 
$no++; 
?> 
<input type="hidden" name="id_sesi" id="idse" value="<?php echo $h->id_sesi;?>"> 
<?php 
} 
?> 
</form> 

Javascript-Code:

function simjwb(co,so,no){ 
//alert("gagal koneksi"); 
var se = document.getElementById("idse").value; 
var jw = $("input:radio[name=jawab"+so+"]:checked").val(); 
//$.post('<?php echo site_url("mahasiswa/uprec/");?>',{ id_record: co, id_soal: so, id_sesi: se, jwb: jw }); 
    $.ajax({ 
     type:"POST", 
     data: { id_record: co, id_soal: so, id_sesi: se, jwb: jw }, 
     url: "<?php echo site_url("mahasiswa/uprec/");?>" 
    }); 
    $('#no'+no).attr('class','panel panel-success'); 
    $('#s'+no).attr('class','sdh'); 
} 

Wie implementieren diese in AngularJS? Was soll ich verwenden ng-click oder ng-model oder etwas anderes? Und wie man Ausdruck in angularjs Funktion folgt in meiner Ajax-Funktion onClick="simjwb(<?php echo $h->id_record;?>,<?php echo $h->id_soal;?>,<?php echo $no;?>)" so kann ich id_record, id_soal, $no in meiner simjwb(expressions) Funktion zu veröffentlichen bekommen?

Sorry für langen Code und mein schlechtes Englisch. Danke für den Fortschritt.

Antwort

0

Sie müssen sowohl ng-click als auch ng-model verwenden.

<label> 
    <input type="radio" ng-model="color.name" value="red" ng-click="saveValue()"> 
    Red 
    </label><br/> 
    <label> 
    <input type="radio" ng-model="color.name" value="green" ng-click="saveValue()"> 
    Green 
    </label><br/> 
    <label> 
    <input type="radio" ng-model="color.name" value="blue" ng-click="saveValue()"> 
    Blue 
    </label> 

in Regler können Sie die savevalue Funktion, so etwas wie definieren unter

$scope.saveValue=function(){ 
    $http.post("/test/save",$scope.color); 
} 

Best Practice ist es, einen Service zu schaffen, die Pflege zu machen http Anrufe nehmen und diesen Dienst in Ihrem Controller injizieren

+0

Übrigens, wie bekomme ich meine id_record, id_soal, $ no aus Sicht (Formular), um die in-Controller, so dass sie Post (einfügen) in die Datenbank? – Agung

+0

Sie können alles einem Scope-Objekt wie $ scope.formData.idRecord usw. zusammen mit dem Radiobutton-Wert zuweisen und dann das gesamte Objekt an Ihren Ruhe-Endpunkt senden – Maverick

+0

Wie kann ich meine 3 Ausdrücke in einem Radiobutton zuweisen? Es tut mir leid, ich bin noch neu in angularjs ... – Agung