Javascript 如何迭代对象数组并在AngularJS中打印密钥
下面是我试图在ng repeat和print Key中迭代的对象数组,但无法这样做Javascript 如何迭代对象数组并在AngularJS中打印密钥,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,下面是我试图在ng repeat和print Key中迭代的对象数组,但无法这样做 $scope.directivesInfo = [ {"ngRepeat": {"enter": true, "leave": true, "move": true, "add": false, "remove": false}}, {"ngView": {"enter": true, "leave": true, "move": false, "add": false, "remove": fa
$scope.directivesInfo = [
{"ngRepeat": {"enter": true, "leave": true, "move": true, "add": false, "remove": false}},
{"ngView": {"enter": true, "leave": true, "move": false, "add": false, "remove": false}},
{"ngInclude": {"enter": true, "leave": true, "move": false, "add": false, "remove": false}},
{"ngSwitch": {"enter": true, "leave": true, "move": false, "add": false, "remove": false}},
{"ngIf": {"enter": true, "leave": true, "move": false, "add": false, "remove": false}},
{"ngClass": {"enter": false, "leave": false, "move": false, "add": true, "remove": true}},
{"ngShow/ngHide": {"enter": false, "leave": false, "move": false, "add": true, "remove": true}},
{"form/ngModel": {"enter": false, "leave": false, "move": false, "add": true, "remove": true}},
{"ngMessages": {"enter": false, "leave": false, "move": false, "add": true, "remove": true}},
{"ngMessage": {"enter": true, "leave": true, "move": false, "add": false, "remove": false}},
];
以下是我的看法-
<tr ng-repeat="(key, value) in directivesInfo">
终端输出-
编辑-
Plnkr-
看看这个
<div ng-repeat="item in directivesInfo">
<div ng-repeat="(key,value) in item">{{key}}<div>
</div>
{{key}}
希望有帮助:)
编辑:我已经从你的plnkr中分叉并修改了它。您可以按以下方法操作这应该可以
<tr ng-repeat="item in directiveinfo">
<td> {{item.name}} </td>
<td ng-repeat="(key,value) in item">
<input type=checkbox ng-model="value">
</td>
</tr>
{{item.name}
这是它的工作原理。另一种方法是通过循环从数组创建新对象:
。。。。
$scope.directivesInfoObject={};
对于(变量i=0;i<$scope.directivesInfo.length;i++){
var key=Object.keys($scope.directivesInfo[i])[0];
$scope.directivesInfoObject[key]=$scope.directivesInfo[i][key];
}
编辑:然后您可以使用:
<tr ng-repeat="(key,value) in directivesInfoObject">
<td> {{key}} </td>
<td ng-repeat="(innerKey,innerValue) in value">
<input type=checkbox ng-model="directivesInfoObject[key][innerKey]">
</td>
</tr>
{{key}}
这将是一种简单直接的方法:
<table>
<tr ng-repeat="item in directivesInfo track by $index">
<td>{{item.name}} </td>
<td ng-repeat="(key,value) in item" ng-if="$index != 0">
<input type="checkbox" ng-model="item[key]">
</td>
</tr>
</table>
指令名
进入
离开
移动
添加
去除
{{item.name}
{{directivesInfo}
我检查了这个解决方案,但是如果它的div是有帮助的,但是检查一下我在tr
中使用了迭代,所以它的生成不是我想要解决的问题。我只是想解决钥匙的问题。你也没提到那件事。现在去看plnkr。你的Plnk是错误的,我已经告诉过你它在工作,但是我期待我上面提到的数组类型-试试我的答案。也许,这会对您有所帮助也许,或者,只是将您的数组声明为一个对象,那么,这将是一种动态的方式。@Sherali Turdiyv在您的方法中,如果我取消选中“任意”复选框,则数组的基础项的特定值不会更新。@ShekharKhairnar。谢谢你的关注。您可以看到:。我编辑过
<tr ng-repeat="(key,value) in directivesInfoObject">
<td> {{key}} </td>
<td ng-repeat="(innerKey,innerValue) in value">
<input type=checkbox ng-model="directivesInfoObject[key][innerKey]">
</td>
</tr>
<table>
<tr ng-repeat="item in directivesInfo track by $index">
<td>{{item.name}} </td>
<td ng-repeat="(key,value) in item" ng-if="$index != 0">
<input type="checkbox" ng-model="item[key]">
</td>
</tr>
</table>