Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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
Javascript 角度-无法使用ng submit获取所选ng重复单选按钮_Javascript_Angularjs_Angularjs Scope_Angularjs Ng Repeat - Fatal编程技术网

Javascript 角度-无法使用ng submit获取所选ng重复单选按钮

Javascript 角度-无法使用ng submit获取所选ng重复单选按钮,javascript,angularjs,angularjs-scope,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Scope,Angularjs Ng Repeat,我可能在这里遗漏了一些非常简单的东西-但是如果我使用ng repeat创建一组单选按钮-我无法使用ng submit获得所选按钮 控制器只是将一组选项附加到作用域 标记只是在表单中创建一组带有ng repeat的单选按钮。它使用ng submit来捕获提交事件。单击下面的“运行代码段”查看问题 angular.module('myApp',[]) .controller('myController',['$scope',函数($scope){ $scope.selectedoption=“”;

我可能在这里遗漏了一些非常简单的东西-但是如果我使用ng repeat创建一组单选按钮-我无法使用ng submit获得所选按钮

控制器只是将一组选项附加到作用域

标记只是在表单中创建一组带有ng repeat的单选按钮。它使用ng submit来捕获提交事件。单击下面的“运行代码段”查看问题

angular.module('myApp',[])
.controller('myController',['$scope',函数($scope){
$scope.selectedoption=“”;
$scope.submitCalled=“”;
$scope.options=[];
$scope.options[0]={id:“option1”,name:“option 1”}
$scope.options[1]={id:“option2”,name:“option 2”}
$scope.options[2]={id:“option3”,name:“option 3”}
$scope.options[3]={id:“option4”,name:“option 4”}
$scope.submitForm=function(){
log($scope.selectedoption);
$scope.submitCalled=“提交调用”+$scope.selectedoption;
};
}]);

{{option.name}
{{selectedoption}
{{submitCalled}}

ng repeat
div应该使用
ng model=“$parent.selectedoption”

原因

ng repeat
每次都会创建一个新的子作用域,因为您正在声明新的
ng model
内部ng repeat将被添加到ng repeat作用域(子)中,该子作用域是由
ng repeat
在每次迭代中创建的。由于要为父范围创建范围变量,因此需要使用指向父范围的
$parent
变量

<div ng-repeat="option in options">
  <input type="radio" name="option" ng-value="option.id" ng-model="$parent.selectedoption">
  <label for="radio">{{option.name}}</label>
</div>

{{option.name}

更新

避免这种
$parent
注释的另一个好方法是使用对象注释,这将遵循以下步骤。您只需在控制器中定义一个作用域变量,如
$scope.selected={option:'}
,然后在html上使用它时,您可以将其称为
selected。option
直接引用父作用域,无需使用
$parent


@Donal yes,,我正在更新我的答案好的,谢谢-不幸的是我只能投一次票-但我相信其他人会的。好的,谢谢。我在这里用第二把小提琴更新了小提琴:@Donal谢谢你的第二把小提琴..我没有时间这么做。。快乐编码:)看看这个,好的,谢谢@DmitriAlgazin-但是pankajparkar有答案。