Non è necessario convertire l'oggetto in serie per iterare su di esso in ng-repeat
. Si può solo utilizzare la seguente sintassi:
<div ng-repeat="(key, value) in items">{{key}} => {{value}}</div>
Documentation di ngRepeat
.
Sfortunatamente, questo approccio non funziona con il filtro orderBy
. Per eseguire un'iterazione sulle proprietà dell'oggetto nell'ordine specifico, è necessario implementare il proprio filtro. Potrebbe essere qualcosa di simile:
JavaScript
angular.module('app', []).
filter('orderByKey', ['$filter', function($filter) {
return function(items, field, reverse) {
var keys = $filter('orderBy')(Object.keys(items), field, reverse),
obj = {};
keys.forEach(function(key) {
obj[key] = items[key];
});
return obj;
};
}]);
HTML
<div ng-repeat="(key, value) in items | orderByKey:'-'">{{key}} => {{value}}</div>
Plunker
http://plnkr.co/edit/DJo0Y6GaOzSuoi202Hkj?p=preview
Tuttavia, anche questo approccio funzionerà solo a partire da 1.4.x
, poiché come indicato nella documentazione, AngularJS prima di 1.4.x
ordinerà le proprietà dell'oggetto in ordine alfabetico mentre itera su di esse in ngRepeat
.
Per farlo funzionare in angolare 1.3.x
o anche 1.2.x
si può eseguire la conversione di oggetto da array di oggetti, ciascuno dei quali conterrà key
e value
proprietà. In questo modo si sarà in grado di utilizzarlo in ngRepeat
in combinazione con filtri tra cui orderBy
. Ecco un codice:
JavaScript
angular.module('app', []).
factory('srv', ['$http', function($http) {
var items = [],
loaded = false;
return {
getItems: function() {
if(!loaded) { // Lazy loading
$http.get('data.json').success(function(data) { // {key1: 'val1', key2: 'val2'}
Object.keys(data).forEach(function(key) {
items.push({key: key, value: data[key]});
});
});
loaded = true;
}
return items; // [{key: 'key1', value:'val1'}, {key:'key2', value: 'val2'}]
}
};
}]).
controller('ctrl', ['$scope', 'srv', function($scope, srv) {
$scope.items = srv.getItems();
}]);
HTML
<div ng-repeat="item in items | orderBy:'-key'">{{item.key}} => {{item.value}}</div>
Plunker
http://plnkr.co/edit/UXmlm1GKYRZzrOV5pMYT?p=preview
json_encode analizza socio matrici in php come oggetti in json. – Sagar
Gli array associativi ** sono ** (JS-) oggetti. Non è chiaro che tipo di dati desideri, sei contento di '[1432070505," Hello "," Ali Akhmedo "]'? – Siguza
Ok, qual è il modo per risolvere il problema? – vaved