Como iterar sobre as chaves e valores com ng-repeat no AngularJS?

No meu controlador, eu tenho dados como: $scope.object = data

Agora, esses dados são o dictionary com chaves e valores do json .

Eu posso acessar o atributo com object.name no modelo. Existe alguma maneira que eu possa iterar sobre as teclas também e exibi-las na tabela como

{{key}} data.key

Os dados são assim

 { "id": 2, "project": "wewe2012", "date": "2013-02-26", "description": "ewew", "eet_no": "ewew", } 

E se:

 
{{key}} {{ value }}

Este método está listado nos documentos: https://docs.angularjs.org/api/ng/directive/ngRepeat

Se você gostaria de editar o valor da propriedade com binding bidirecional:

  {{key}}  

Eu não acho que há uma function interna em angular para fazer isso, mas você pode fazer isso criando uma propriedade de escopo separada contendo todos os nomes de header, e você pode preencher essa propriedade automaticamente assim:

 var data = { foo: 'a', bar: 'b' }; $scope.objectHeaders = []; for ( property in data ) { $scope.objectHeaders.push(property); } // Output: [ 'foo', 'bar' ] 

Um exemplo de lista de tarefas que faz um loop sobre o object por 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; } }); 
   
Total Items: {{toDoListCntrlAs.toDoListItems | propsCounter}}
Enter todo Item: {{toDoListCntrlAs.toDoEntry}}
{{$index+1}} : {{key}} : Title = {{ prop.title}} : Status = {{ prop.completed}}

Podemos seguir o procedimento abaixo para evitar a exibição de valores-chave em ordem alfabética.

Javascript

 $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

 

{{key}} : {{value}}

  Use below code it is working to display your key and value here is key start with 1:  {{key +1}} {{value.title}}  Below is document link for it. 

https://docs.angularjs.org/api/ng/directive/ngRepeat

Exemplo completo aqui: –

    AngularJS       
{{key}}
{{key}}

Você pode fazer isso no seu javascript (controlador) ou no seu html (visão angular) …

js:

 $scope.arr = []; for ( p in data ) { $scope.arr.push(p); } 

html:

  {{k}}  

Eu acredito que a maneira html é mais angular, mas você também pode fazer no seu controlador e recuperá-lo em seu html …

Também não é uma má idéia de olhar para as chaves do object, eles dão-lhe uma matriz das chaves, se você precisar deles, mais informações aqui:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

Aqui está um exemplo de trabalho:

 
{{key}} : {{value}}

editado