Javascript 角度,获取ng repeat中选中复选框(或收音机)的索引
我正在使用ng repeat创建一组表单,每个表单都有一个复选框(如果有必要,可以更改为radio),并且我正在尝试操作选中的特定级别。所以我要做的是传递复选框的索引(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
<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')
);
}
};