在Angular JS中转换数组对象的简单方法是什么?
What is easy way to convert object in array Angular JS?
我的应用程序是在Angular JS上构建的,在服务器上有很多AJAX请求。例如,在PHP中,我将输出数组格式化为:
$dialog[$userId] = array(
'time' => $key,
'message' => $message['message'],
'name_user' => $info['name']
);
echo json_encode($dialog); die();
但是在Angular JS中,我得到的不是array而是object:
549: Objectid_user: "549"message: "Hello"name_user: "Ali .Akhmedov"时间:1432070505
问题,如果使用ng-repeat
然后不工作排序对象。为什么在PHP中我设置数组,而在客户端获取对象?
转换对象到数组的简单方法是什么?因为页面上有很多来自AJAX的对象
您不需要将对象转换为数组,以便在ng-repeat
中迭代它。您可以使用以下语法:
<div ng-repeat="(key, value) in items">{{key}} => {{value}}</div>
Documentation of ngRepeat
.
不幸的是,这种方法不适用于orderBy
过滤器。要按特定顺序遍历对象属性,需要实现自己的过滤器。可能是这样的:
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;
};
}]);