Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在AngularJs中获取所选单选按钮值_Angularjs_Radio Button_Angularjs Ng Repeat - Fatal编程技术网

无法在AngularJs中获取所选单选按钮值

无法在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

我正在使用AngularJs(1.x),我已经动态创建了单选按钮。单选按钮下方有一个“提交”按钮,用于将所选值发送到后端

但问题是,在我的控制器中,我总是将“未定义”作为选中的单选按钮值。你能告诉我哪里出了问题吗

下面是我的HTML代码:

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