Как вернуть widgetDefinitions со службой данных в malhar-angular-dashboard?

Я установил модуль 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'
  }
]

person que1326    schedule 17.12.2015    source источник


Ответы (1)


Исходная проблема в github была прокомментирована и закрыта.

Вот комментарий с гитхаба:

@pitong Убедитесь, что параметры панели инструментов содержат свойство с именем widgetDefinitions и это массив, даже если он пуст. Также убедитесь, что используемая вами версия браузера поддерживает функцию карты для массивов. Эта функция карты для массива стала стандартом ECMA-262 в 5-м издании, поэтому ваша версия браузера может не поддерживать ее.

person Will    schedule 03.11.2016