AngularJS에서 ng-repeat로 키와 값을 반복하는 방법은 무엇입니까?
내 컨트롤러에는 다음과 같은 데이터가 있습니다. $scope.object = data
이제이 데이터는의 키와 값이있는 사전입니다 json
.
object.name
템플릿에서 속성에 액세스 할 수 있습니다 . 키를 반복해서 표에 표시 할 수있는 방법이 있습니까?
<tr><td> {{key}} </td> <td> data.key </td>
데이터는 다음과 같습니다
{
"id": 2,
"project": "wewe2012",
"date": "2013-02-26",
"description": "ewew",
"eet_no": "ewew",
}
어때 :
<table>
<tr ng-repeat="(key, value) in data">
<td> {{key}} </td> <td> {{ value }} </td>
</tr>
</table>
이 방법은 문서에 나열되어 있습니다 : https://docs.angularjs.org/api/ng/directive/ngRepeat
양방향 바인딩을 사용하여 속성 값을 편집하려는 경우 :
<tr ng-repeat="(key, value) in data">
<td>{{key}}<input type="text" ng-model="data[key]"></td>
</tr>
이 작업을 수행하기 위해 angular에 내장 함수가 있다고 생각하지 않지만 모든 헤더 이름을 포함하는 별도의 범위 속성을 만들어이를 수행 할 수 있으며 다음과 같이이 속성을 자동으로 채울 수 있습니다.
var data = {
foo: 'a',
bar: 'b'
};
$scope.objectHeaders = [];
for ( property in data ) {
$scope.objectHeaders.push(property);
}
// Output: [ 'foo', 'bar' ]
알파벳 순서로 키-값이 표시되는 것을 방지하기 위해 아래 절차를 따를 수 있습니다.
자바 스크립트
$scope.data = {
"id": 2,
"project": "wewe2012",
"date": "2013-02-26",
"description": "ewew",
"eet_no": "ewew",
};
var array = [];
for(var key in $scope.data){
var test = {};
test[key]=$scope.data[key];
array.push(test);
}
$scope.data = array;
HTML
<p ng-repeat="obj in data">
<font ng-repeat="(key, value) in obj">
{{key}} : {{value}}
</font>
</p>
객체를 반복 하는 할일 목록 예제 ng-repeat
:
var app = angular.module('toDolistApp', []);
app.controller('toDoListCntrl', function() {
var self = this;
self.toDoListItems = {};// []; //dont use square brackets if keys are string rather than numbers.
self.doListCounter = 0;
self.addToDoList = function() {
var newToDoItem = {};
newToDoItem.title = self.toDoEntry;
newToDoItem.completed = false;
var keyIs = "key_" + self.doListCounter++;
self.toDoListItems[keyIs] = newToDoItem;
self.toDoEntry = ""; //after adding the item make the input box blank.
};
});
app.filter('propsCounter', function() {
return function(input) {
return Object.keys(input).length;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="toDolistApp">
<div ng-controller="toDoListCntrl as toDoListCntrlAs">
Total Items: {{toDoListCntrlAs.toDoListItems | propsCounter}}<br />
Enter todo Item: <input type="text" ng-model="toDoListCntrlAs.toDoEntry"/>
<span>{{toDoListCntrlAs.toDoEntry}}</span>
<button ng-click="toDoListCntrlAs.addToDoList()">Add Item</button> <br/>
<div ng-repeat="(key, prop) in toDoListCntrlAs.toDoListItems">
<span>{{$index+1}} : {{key}} : Title = {{ prop.title}} : Status = {{ prop.completed}} </span>
</div>
</div>
</body>
여기에 완전한 예 :-
<!DOCTYPE html >
<html ng-app="dashboard">
<head>
<title>AngularJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<link rel="stylesheet" href="./bootstrap.min.css">
<script src="./bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js"></script>
</head>
<body ng-controller="myController">
<table border='1'>
<tr ng-repeat="(key,val) in collValues">
<td ng-if="!hasChildren(val)">{{key}}</td>
<td ng-if="val === 'string'">
<input type="text" name="{{key}}"></input>
</td>
<td ng-if="val === 'number'">
<input type="number" name="{{key}}"></input>
</td>
<td ng-if="hasChildren(val)" td colspan='2'>
<table border='1' ng-repeat="arrVal in val">
<tr ng-repeat="(key,val) in arrVal">
<td>{{key}}</td>
<td ng-if="val === 'string'">
<input type="text" name="{{key}}"></input>
</td>
<td ng-if="val === 'number'">
<input type="number" name="{{key}}"></input>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript">
var app = angular.module("dashboard",[]);
app.controller("myController",function($scope){
$scope.collValues = {
'name':'string',
'id':'string',
'phone':'number',
'depart':[
{
'depart':'string',
'name':'string'
}
]
};
$scope.hasChildren = function(bigL1) {
return angular.isArray(bigL1);
}
});
</script>
</html>
Use below code it is working to display your key and value here is key start with 1:
<tr ng-repeat="(key,value) in alert_list" >
<td>{{key +1}}</td>
<td>{{value.title}}</td>
</tr>
Below is document link for it.
https://docs.angularjs.org/api/ng/directive/ngRepeat
자바 스크립트 (컨트롤러) 또는 html (각도)에서 할 수 있습니다.
js :
$scope.arr = [];
for ( p in data ) {
$scope.arr.push(p);
}
html :
<tr ng-repeat="(k, v) in data">
<td>{{k}}<input type="text" ng-model="data[k]"></td>
</tr>
나는 html 방식이 더 각진 것이라고 생각하지만 컨트롤러에서 할 수도 있고 html에서 검색 할 수도 있습니다.
Object 키를 보는 것도 나쁘지 않습니다. 필요한 경우 키 배열을 제공합니다. 자세한 내용은 여기를 참조하세요.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
다음은 작동하는 예입니다.
<div class="item item-text-wrap" ng-repeat="(key,value) in form_list">
<b>{{key}}</b> : {{value}}
</div>
편집
'Program Tip' 카테고리의 다른 글
postgres : 사용자를 수퍼 유저로 업그레이드 하시겠습니까? (0) | 2020.10.02 |
---|---|
Node.js : 줄 바꿈없이 콘솔에 인쇄 하시겠습니까? (0) | 2020.10.02 |
urllib, urllib2, urllib3 및 요청 모듈의 차이점은 무엇입니까? (0) | 2020.09.30 |
Windows 배치 파일을 통해 긴 명령을 여러 줄로 분할 (0) | 2020.09.30 |
Zalgo 텍스트는 어떻게 작동합니까? (0) | 2020.09.30 |