Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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 repeat中选中复选框(或收音机)的索引_Javascript_Angularjs - Fatal编程技术网

Javascript 角度,获取ng repeat中选中复选框(或收音机)的索引

Javascript 角度,获取ng repeat中选中复选框(或收音机)的索引,javascript,angularjs,Javascript,Angularjs,我正在使用ng repeat创建一组表单,每个表单都有一个复选框(如果有必要,可以更改为radio),并且我正在尝试操作选中的特定级别。所以我要做的是传递复选框的索引(ng repeat中的自身索引)。让我告诉你我的意思 <div class="saInstrcutionTableRow" ng-repeat="parent in listTable track by $index"> <div class="saInstrcu

我正在使用ng repeat创建一组表单,每个表单都有一个复选框(如果有必要,可以更改为radio),并且我正在尝试操作选中的特定级别。所以我要做的是传递复选框的索引(ng repeat中的自身索引)。让我告诉你我的意思

<div class="saInstrcutionTableRow"  ng-repeat="parent in listTable track by $index">
                        <div class="saInstrcutionLeft"></div>
                        <!-- parent levels -->
                        <div  class="saInstrcutionCRight saInstrcutionTitle"><div class="parentSub1"> <input type="checkbox" ng-model="levelPicker">{{parent.name}}</div></div>

                        </div>

                    </div>

{{parent.name}
在这里,我只是用ng model=“levelPicker”下的输入重复这个名称。我按下了它外面的一个按钮,它使用了我设置的一个函数,只需要在repeat中传递复选框的索引,就像这样-

<button type="button" class="resultsButton" ng-click="submitNewSub(Checkbox index here)">Submit</button>
提交

在angular中是否有一些方法可以针对选中的复选框并在重复中获取其索引?我正在使用此方法在其中添加子项。我尝试了一些方法,但我不确定如何直接引用它并获取其索引(在angular中)。任何输入都将不胜感激。谢谢!!

您可以使用以下内容捕获所选索引

<input type="checkbox" ng-change="onChange({{$index}})" ... />

然后根据需要使用
selectedIndex
。这里有一个ng重复为每个项目创建一个新范围,因此父项不能直接访问任何复选框设置的“levelPicker”

最正确的方法可能是这样的:

$scope.listTable = [
    { name : 'a', selected: false },
    { name : 'b', selected: false },
    { name : 'c', selected: false }
];
$scope.selectMe = function ( index, previousValue ) {
    $scope.listTable[index].selected = !previousValue;
};
$scope.submitNewSub = function () {
    for ( var i=0; i<$scope.listTable.length; i++ ) {
        console.log($scope.listTable[i].name+
            ($scope.listTable[i].selected ?
                ' is selected' :
                ' is not selected')
        );
    }
}

你试过
$index
?这个按钮不在ng repeat的范围内,所以$index不起作用。为什么你要用$rootScope而不是$scope?@marneborn$scope也能起作用-我刚刚用
app.run()
$rootScope
创建了一个快速示例
$scope.listTable = [
    { name : 'a', selected: false },
    { name : 'b', selected: false },
    { name : 'c', selected: false }
];
$scope.selectMe = function ( index, previousValue ) {
    $scope.listTable[index].selected = !previousValue;
};
$scope.submitNewSub = function () {
    for ( var i=0; i<$scope.listTable.length; i++ ) {
        console.log($scope.listTable[i].name+
            ($scope.listTable[i].selected ?
                ' is selected' :
                ' is not selected')
        );
    }
}
<input type="checkbox" ng-click="selectMe($index, levelPicker)" ng-model="levelPicker">{{parent.name}}
$scope.submitNewSub = function () {
    for(var cs = $scope.$$childHead; cs; cs = cs.$$nextSibling) {
        console.log($scope.listTable[cs.$index].name+
            (cs.levelPicker ?
                ' is selected' :
                ' is not selected')
        );
    }
};