example array angularjs angularjs-ng-repeat

angularjs - array - ng-repeat order by



¿Cómo iterar sobre las claves y los valores con ng-repeat en AngularJS? (9)

Aquí hay un ejemplo de trabajo:

<div class="item item-text-wrap" ng-repeat="(key,value) in form_list"> <b>{{key}}</b> : {{value}} </div>

editado

En mi controlador, tengo datos como: $scope.object = data

Ahora estos datos son el diccionario con claves y valores de json .

Puedo acceder al atributo con object.name en la plantilla. ¿Hay alguna manera de que pueda iterar sobre las teclas y mostrarlas en una tabla como

<tr><td> {{key}} </td> <td> data.key </td>

Los datos son así.

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


No creo que haya una función incorporada en angular para hacer esto, pero puedes hacerlo creando una propiedad de ámbito separada que contenga todos los nombres de encabezado, y puedes rellenar esta propiedad automáticamente de esta manera:

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


Podemos seguir el siguiente procedimiento para evitar la visualización de valores-clave en orden alfabético.

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

<p ng-repeat="obj in data"> <font ng-repeat="(key, value) in obj"> {{key}} : {{value}} </font> </p>


Puede hacerlo en su javascript (controlador) o en su html (vista angular) ...

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>

Creo que la forma html es más angular, pero también puede hacerlo en su controlador y recuperarlo en su html ...

Tampoco es una mala idea mirar las claves de Objeto, te dan la matriz de las claves si las necesitas, más información aquí:

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



Si desea editar el valor de la propiedad con enlace de dos vías:

<tr ng-repeat="(key, value) in data"> <td>{{key}}<input type="text" ng-model="data[key]"></td> </tr>


Un ejemplo de lista de tareas pendientes que ng-repeat objeto mediante 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>


Ejemplo completo aquí:

<!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