10

我有几个表格。每个表单都有几个可能的单选按钮和一个提交按钮。只能选中一个单选按钮(对每个单选使用相同的名称属性)。提交表单时,如何使用 angularjs 获取选中的单选按钮的值?@blesh 建议对每个输入使用相同的 ng-model,但请注意,问题是输入标签是使用 ng-repeat 生成的,这就是问题的开始。当然,我当然只需要一个按钮来输入一堆输入。在玩@blesh 的答案后,在以下 plunker 中对其进行了很好的描述:http ://plnkr.co/edit/5KTQRGdPv3dbP462vq1a?p=preview在其中,您可以看到警报显示的是初始值而不是当前值选定的输入。

4

4 回答 4

20

您的单选按钮的值将在您在输入元素上分配 ng-model="" 的任何范围属性上可用。尝试这样的事情:

JS

app.controller('MyCtrl', function($scope){ 
   $scope.submitForm = function (){
       alert($scope.radioValue):
   };

   $scope.radioValue = 1;
});

HTML

<form name="myForm" ng-controller="MyCtrl" ng-submit="submitForm()">
   <label><input type="radio" name="test" ng-model="radioValue" value="1"/> One</label>
   <label><input type="radio" name="test" ng-model="radioValue" value="2"/> Two</label>
   <label><input type="radio" name="test" ng-model="radioValue" value="3"/> Three</label>
   <div>currently selected: {{radioValue}}</div>
   <button type="submit">Submit</button>
</form>

而且,所以你可以看到它的工作,这是一个演示示例的 plunker

于 2013-03-01T20:48:16.157 回答
18

只需添加$parent.ng-model

<form name="myForm" ng-submit="submitForm()">
       <label data-ng-repeat="i in [1,2,3]"><input type="radio" name="test" ng-model="$parent.radioValue" value="{{i}}"/>{{i}}</label>
       <div>currently selected: {{radioValue}}</div>
       <button type="submit">Submit</button>
    </form>
于 2015-01-14T05:46:12.597 回答
0

我遇到了这个问题,并找到了一个非常简单和干净的解决方案。这是你应该做的。

在您的控制器中,使用任何名称(在本例中为“radioValue”)创建一个空对象。

在您的 HTML 文件中,为每个单选按钮/输入使用相同的“ng-model”,其名称与对象加入每个单选按钮的“名称”属性相同(每个按钮也应该相同),并用句点分隔(. ) 如代码片段所示。

控制器

var radioValue={};
...
...
console.log($scope.radiovalue) //use JSON.strinigify if naccessary

HTML 文件

    <input type="radio" name="somename" ng-model="radioValue.somename" value="1"/>
    <input type="radio" name="somename" ng-model="radioValue.somename" value="2"/>
    <input type="radio" name="somename" ng-model="radioValue.somename" value="3"/>
//Don't forget to mention value attribute. ng-model does the work by identifying the radio-buttons/inputs by value attribute

您应该期待的输出

{"somename":"1"} //if radio-button with value "1" is selected.
于 2016-12-26T13:03:44.110 回答
0

结合ng-value

app.controller('MyCtrl', function($scope){ 
   $scope.submitForm = function() {
      *****
   };
   $scope.radioBtn = {
    name: 'radioButton'
   };

   $scope.radioValueOne = {"id": "1", "value": "whatever you want"};
   $scope.radioValueTwo = {"id": "2", "value": "whatever you want"};
   $scope.radioValueThree = {"id": "3", "value": "whatever you want"};
});

<form name="myForm" ng-controller="MyCtrl" ng-submit="submitForm()">
   <label><input type="radio" name="test" ng-model="radioBtn.name" ng-value="radioValueOne"/> One</label>
   <label><input type="radio" name="test" ng-model="radioBtn.name" ng-value="radioValueTwo"/> Two</label>
   <label><input type="radio" name="test" ng-model="radioBtn.name" ng-value="radioValueThree"/> Three</label>
   <div>currently selected: {{radioBtn.name}}</div>
   <button type="submit">Submit</button>
</form>
于 2016-04-28T08:57:12.030 回答