2016-12-01 25 views
-1

我試圖每次檢查單選按鈕時將值壓入數組。我怎樣才能做到這一點?如何使用angularjs中的單選按鈕將值推入數組

<div class="form-group" show-errors> 
    <div class="col-sm-12" > 
     <div class="form-group col-xs-12 nopadding" > 
      <label class="control-label" for="mobile">Have you taken any admission tests? (eg. IELTS, GRE, etc)</label> 
      <div class="btn-group col-xs-12 nopadding" data-toggle="buttons"> 
       <label class="col-xs-6 btn btn-white" ng-click="checkMultiSelect(vm.studentObj,admission)" ng-class="{'active':vm.studentObj.test_taken === 'Y'}"> 
        <input type="radio" name="test_taken" ng-model="vm.studentObj.test_taken" value="Y"> Yes 
       </label> 
       <label class="col-xs-6 btn btn-white" ng-click="checkMultiSelect(vm.studentObj,'test_taken','N')" ng-class="{'active':vm.studentObj.test_taken === 'N'}"> 
        <input type="radio" name="test_taken" ng-model="vm.studentObj.test_taken" value="N"> No 
       </label> 
      </div> 
     </div> 
    </div> 
</div> 
<div class="form-group" show-errors> 
    <div class="col-sm-12" > 
     <div class="form-group col-xs-12 nopadding" > 
      <label class="control-label" for="mobile">Educational Info (High School/ Secondary/ Primary/ Pre School)</label> 
      <div class="btn-group col-xs-12 nopadding" data-toggle="buttons"> 
       <label class="col-xs-6 btn btn-white" ng-click="checkMultiSelect(vm.studentObj,Educational)" ng-class="{'active':vm.studentObj.test_taken === 'Y'}"> 
        <input type="radio" name="test_taken" ng-model="vm.studentObj.test_taken" value="Y"> Yes 
       </label> 
       <label class="col-xs-6 btn btn-white" ng-click="checkMultiSelect(vm.studentObj,'test_taken','N')" ng-class="{'active':vm.studentObj.test_taken === 'N'}"> 
        <input type="radio" name="test_taken" ng-model="vm.studentObj.test_taken" value="N"> No 
       </label> 
      </div> 
     </div> 
    </div> 
</div> 

我的功能

$rootScope.checkMultiSelect = function (data, key) { 
    if (!data) { 
    data = []; 
    } 
    var idx = data.indexOf(key); 
    if (idx > -1) { 
    data.splice(idx, 1); 
    } else { 
    data.push(key); 
    } 
}; 
+2

你可以把一個POC在jsfiddle嗎? –

+0

抱歉,我不能........... – MMR

+0

不要在函數中傳遞'vm.studentObj'數組,而是在控制器的javascript代碼中使用'this.studentObj'。 –

回答

0

你並不需要手動將數據推來獲取表示形式的對象。 Angular中的數據綁定爲你做了這個。

<form ng-form="studentForm"> 
    <div class="form-group" show-errors> 
     <div class="col-sm-12" > 
      <div class="form-group col-xs-12 nopadding" > 
       <label class="control-label" for="mobile">Have you taken any admission tests? (eg. IELTS, GRE, etc)</label> 
       <div class="btn-group col-xs-12 nopadding" data-toggle="buttons"> 
        <label class="col-xs-6 btn btn-white" ng-class="{'active':studentObj.test_taken === 'Y'}"> 
         <input type="radio" name="test_taken" ng-model="studentObj.test_taken" value="Y"> Yes 
        </label> 
        <label class="col-xs-6 btn btn-white" ng-class="{'active':studentObj.test_taken === 'N'}"> 
         <input type="radio" name="test_taken" ng-model="studentObj.test_taken" value="N"> No 
        </label> 
       </div> 
      </div> 
     </div> 
    </div> 
    <div class="form-group" show-errors> 
     <div class="col-sm-12" > 
      <div class="form-group col-xs-12 nopadding" > 
       <label class="control-label" for="mobile">Educational Info (High School/ Secondary/ Primary/ Pre School)</label> 
       <div class="btn-group col-xs-12 nopadding" data-toggle="buttons"> 
        <label class="col-xs-6 btn btn-white" ng-class="{'active':studentObj.edu_info === 'Y'}"> 
         <input type="radio" name="test_taken" ng-model="studentObj.edu_info" value="Y"> Yes 
        </label> 
        <label class="col-xs-6 btn btn-white" ng-class="{'active':studentObj.edu_info === 'N'}"> 
         <input type="radio" name="test_taken" ng-model="studentObj.edu_info" value="N"> No 
        </label> 
       </div> 
      </div> 
     </div> 
    </div> 
</form> 

說別人用第一個廣播填寫表格爲yes,第二個填寫爲no。 studentObj的輸出將是

{ 
    test_taken: 'Y', 
    edu_info: 'N' 
} 

這是Angular的美麗。您不需要手動推送值,數據綁定可以爲您完成所有這些工作,而且您無需使用不必要的代碼來混淆控制器。

相關問題