Я установил модуль malhar-angular-dashboard. Я не хочу жестко кодировать свои widgetDefinitions, поэтому я создал сервис, который будет возвращать массив с объектами виджетов. Я использую службу отдыха для возврата данных, таких как имена виджетов, заголовки и т. д. Проблема в том, что я получаю эту ошибку и не знаю, как ее решить:
TypeError: widgetDefs.map не является функцией
СЛУЖЕБНЫЕ ДАННЫЕ
.factory('widgetRestService',['$http','UrlService','$log','$q',
function($http,UrlService,$log,$q){
var serviceInstance = {};
serviceInstance.getInfo = function(){
var request = $http({method: 'GET', url: '/rest/widgets/getListInfoDashboards'})
.then(function(success){
serviceInstance.widgets = success.data;
$log.debug('serviceInstance.widgets SUCCESS',serviceInstance.widgets);
},function(error){
$log.debug('Error ', error);
$log.debug('serviceInstance.widgets ERROR',serviceInstance.widgets);
});
return request;
};
serviceInstance.getAllWidgets = function () {
if (serviceInstance.widgets) {
return serviceInstance.widgets;
} else {
return [];
}
};
return serviceInstance;
}]);
Служба определения виджетов
.factory('widgetDefinitions',['widgetRestService','$log','$q','$http',function(widgetRestService,$log,$q,$http) {
var widgetDefinitions = [];
return widgetRestService.getInfo().then(function (data) {
var widgets = widgetRestService.getAllWidgets();
$log.debug('widgetsDefs ', widgets);
for (var i = 0; i < widgets.length; i++) {
widgetDefinitions.push(widgets[i]);
}
$log.debug('widgetDefinitions ', widgetDefinitions);
return widgetDefinitions;
});
});
Консоль
TypeError: widgetDefs.map не является функцией
widgetDefs: [Объект,Объект,Объект]
widgetDefinitions: [Объект,Объект,Объект]
Примечание
Если я жестко запрограммирую свой массив, возвращаемый сервисом widgetDefinitions, таким образом, он будет работать, если я вернусь с помощью службы rest, это не сработает (widgetDefs.map не является функцией):
[
{
name:'widgetList',
title:'title1'
},
{
name:'widgetPie',
title:'title2'
},
{
name:'widgetTable',
title:'title3'
}
]