如何在angularjs中的每次点击事件中保存单选按钮值?

时间:2016-04-27 07:18:13

标签: php angularjs codeigniter

我想创建一个角度应用程序,可以在每次点击事件中将单选按钮值保存到数据库中。在我之前的应用程序中,我使用php ajax来创建它并且运行良好。我使用Codeigniter框架。这是代码:

PHP和HTML代码:

<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代码:

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');
}

如何在angularjs中实现这一点?我应该使用ng-clickng-model或其他什么?以及如何解析我的ajax函数onClick="simjwb(<?php echo $h->id_record;?>,<?php echo $h->id_soal;?>,<?php echo $no;?>)"中的angularjs函数中的表达式,以便我可以id_record, id_soal, $nosimjwb(expressions)函数中发布?

对不起,因为长代码和我的英文不好。谢谢你的进步。

1 个答案:

答案 0 :(得分:0)

您必须同时使用ng-click和ng-model。

  <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>

在控制器中你可以定义saveValue函数,如下面的

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

最佳做法是创建一个服务,负责进行http调用并在控制器中注入该服务