0

我已经安装了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-service 返回的数组进行硬编码,它可以工作,如果我用我的休息服务返回不起作用(widgetDefs.map 不是一个函数):

[
  {
    name:'widgetList',
    title:'title1'
  },
  {
    name:'widgetPie',
    title:'title2'
  },
  {
    name:'widgetTable',
    title:'title3'
  }
]
4

1 回答 1

1

github中的原始问题已被评论并关闭。

以下是来自 github 的评论:

@pitong 确保仪表板选项包含一个名为 widgetDefinitions 的属性,它是一个数组,即使它是空的。还要确保您使用的浏览器版本支持数组的 map 功能。这个数组的映射函数在第 5 版中成为 ECMA-262 标准,因此您的浏览器版本可能不支持它。

于 2016-11-03T16:38:46.133 回答