无法在AngularJs中获取所选单选按钮值
我正在使用AngularJs(1.x),我已经动态创建了单选按钮。单选按钮下方有一个“提交”按钮,用于将所选值发送到后端 但问题是,在我的控制器中,我总是将“未定义”作为选中的单选按钮值。你能告诉我哪里出了问题吗 下面是我的HTML代码:无法在AngularJs中获取所选单选按钮值,angularjs,radio-button,angularjs-ng-repeat,Angularjs,Radio Button,Angularjs Ng Repeat,我正在使用AngularJs(1.x),我已经动态创建了单选按钮。单选按钮下方有一个“提交”按钮,用于将所选值发送到后端 但问题是,在我的控制器中,我总是将“未定义”作为选中的单选按钮值。你能告诉我哪里出了问题吗 下面是我的HTML代码: <table> <tr ng-repeat="detail in details"> <td><input type="radio" name="userinputs
<table>
<tr ng-repeat="detail in details">
<td><input type="radio" name="userinputs" ng-model="selectedValues[detail.path]" /></td>
<td class="text">{{detail.created_time}}</td>
<td class="text">{{detail.path}}</td>
</tr>
</table>
<button type="button" ng-click="submitAction()>
有人能告诉我们,获取动态创建的单选按钮值的正确方法是什么吗
编辑:由于评论部分的一个人问我“细节”数组是什么样子的……“细节”数组是一个对象数组。以下是示例:
[
{
"created_time": "2018-06-14 09:15:59.923639",
"path": "hdfs://rhel-sp1-hadoop-mgr-1.node.dc1.pnda.local:8…da/flink/savepoints/savepoint-748ad1-284636263a29",
"$$hashKey": "object:124"
},
{
"created_time": "2018-06-14 09:17:33.913376",
"path": "hdfs://rhel-sp1-hadoop-mgr-1.node.dc1.pnda.local:8…da/flink/savepoints/savepoint-748ad1-303080089004",
"$$hashKey": "object:125"
},
{
"created_time": "2018-06-14 09:22:17.562679",
"path": "hdfs://rhel-sp1-hadoop-mgr-1.node.dc1.pnda.local:8…da/flink/savepoints/savepoint-748ad1-ea56f40fc986",
"$$hashKey": "object:126"
}
]
提交时,将ng模型值作为参数传递给ng click函数,如下所示
<table>
<tr ng-repeat="detail in details">
<td><input type="radio" ng-value="detail" name="userinputs" ng-model="data.selectedValues" /></td>
<td class="text">{{detail.created_time}}</td>
<td class="text">{{detail.path}}</td>
</tr>
</table>
<button type="button" ng-click="submitAction(data.selectedValues)">
{{detail.created_time}
{{detail.path}
您不能以这种方式使用ng模型,在ng模型中,您只能分配值对应于分配给它的html元素的。
例子:
如果在应用程序中使用它,ng模型将仅为变量指定true或false,因为此单选按钮或复选按钮仅处理布尔值
在您的情况下,您有几种解决问题的方法,具体取决于您想做什么:
**解决方案1:*如果要添加多个选定值
<table>
<tr ng-repeat="detail in details">
<td>
<input type="checkbox" name="userinputs" ng-click="addSelectedValue(detail)" ng-model="someModel" /></td>
<td class="text">{{detail.created_time}}</td>
<td class="text">{{detail.path}}</td>
</tr>
</table>
<button type="button" ng-click="submitAction()">Sugmit</button>
解决方案2:如果只需要选择一个值,则更容易
<controller ng-controller="main">
<table>
<tr ng-repeat="detail in details">
<td>
<input type="radio" name="userinputs" ng-click="selectedValue = detail" ng-model="someModel" /></td>
<td class="text">{{detail.created_time}}</td>
<td class="text">{{detail.path}}</td>
</tr>
</table>
<button type="button" ng-click="submitAction()">Sugmit</button>
</controller>
在这两种解决方案中
我使用ng click event来捕获值(您可以使用ng change),重点是您需要一些事件来为变量赋值
但如果你想使用ng模型,你可以这样做
解决方案3
<controller ng-controller="main">
<table>
<tr ng-repeat="detail in details">
<td>
<input type="radio" name="userinputs" ng-model="detail.isSelected" /></td>
<td class="text">{{detail.created_time}}</td>
<td class="text">{{detail.path}}</td>
</tr>
</table>
<button type="button" ng-click="submitAction()">Sugmit</button>
</controller>
然后我编辑了答案。使用ng值,而不是为ng模型指定名称,使其成为数据。SelectedValues
详细信息
数组是什么样子的?它是一个对象数组。看起来是这样的:[{“创建时间”:“2018-06-1409:15:59.923639”,“路径”:hdfs://rhel-sp1-hadoop-mgr-1.node.dc1.pnda.local:8…da/flink/savepoints/savepoints-748ad1-284636263a29“,“$$hashKey”:“对象:124”},{“创建时间”:“2018-06-14 09:17:33.913376”,“路径”:"hdfs://rhel-sp1-hadoop-mgr-1.node.dc1.pnda.local:8…da/flink/savepoints/savepoint-748ad1-303080089004“,“$$hashKey”:“object:125”}]@Protozoid请参见我的问题。我用详细的数组值编辑了这个问题
<controller ng-controller="main">
<table>
<tr ng-repeat="detail in details">
<td>
<input type="radio" name="userinputs" ng-click="selectedValue = detail" ng-model="someModel" /></td>
<td class="text">{{detail.created_time}}</td>
<td class="text">{{detail.path}}</td>
</tr>
</table>
<button type="button" ng-click="submitAction()">Sugmit</button>
</controller>
$scope.selectedValue = {};
//submit values
$scope.submitAction = function(){
$scope.selectedValue;
}
<controller ng-controller="main">
<table>
<tr ng-repeat="detail in details">
<td>
<input type="radio" name="userinputs" ng-model="detail.isSelected" /></td>
<td class="text">{{detail.created_time}}</td>
<td class="text">{{detail.path}}</td>
</tr>
</table>
<button type="button" ng-click="submitAction()">Sugmit</button>
</controller>
//submit values
$scope.submitAction = function(){
//select all the values that are marked as selected
let selectedValues = $scope.details.filter((values)=>values.isSeleted==true);
}