Angular小部件中的Angular Grid返回错误:[$injector:unp]未知提供程序:

Angular Grid in an Angular widget returns Error: [$injector:unpr] Unknown provider:

本文关键字:Angular unp injector 未知 程序 Grid 错误 返回 小部      更新时间:2024-05-21

在下面的代码中,我创建了一个使用角度网格传递数据的角度小部件。然而,我得到以下错误Error: [$injector:unpr] Unknown provider: alphadataProvider <- alphadata

小工具代码:

'use strict';
angular.module('alphabeta.table.widgets', ['adf.provider', 'btford.markdown', 'ngGrid'])
  .value('githubApiUrl', 'https://api.github.com/repos/')
  .config(function(dashboardProvider){
dashboardProvider
  .widget('reservationTotals', {
    title: 'Reservation Totals',
    description: 'Reservation Totals widget',
    controller: 'reservationTotalsCtrl',
    templateUrl: 'scripts/widgets/alphabeta/alphabeta.html',
    resolve: {
        alphadata: function(alphatradingService){
            return alphatradingService.get();
        }
    },
    edit: {
      templateUrl: 'scripts/widgets/alphabeta/edit.html',
      reload: false
    }
  });
 })

服务

 .service('alphatradingService', function($q, $http, githubApiUrl){
return {
  get: function(){
    var deferred = $q.defer();
    $http.get('9_Response.json')
      .success(function(data){
        deferred.resolve(data);
      })
      .error(function(){
        deferred.reject();
      });
    return deferred.promise;
  }
};
})

控制器

.controller('reservationTotalsCtrl', function($scope, alphadata){
var tabledata = [];
var i, n;
var ycount=0, yexist=0;
var numf;
for(i=0;i<alphadata.length;i++){
    yexist=0;
    for(n=0;n<ycount;n++){
        if (alphadata[i].stYear == tabledata[n].Year && alphadata[i].market == tabledata[n].Market) {
            tabledata[n].Sales += alphadata[i].totSale;
            tabledata[n].Sales = parseFloat(Math.round(tabledata[n].Sales * 100) / 100);
            yexist++;
            break;
        } 
    }
    if (!yexist) {
        numf = alphadata[i].totSale;
        tabledata.push({
                Market: alphadata[i].market,
                Year: alphadata[i].stYear,
                Sales: parseFloat(Math.round(numf * 100) / 100),
                CustomerName: alphadata[i].custName
        });
        ycount++;   
    }           
}
$scope.data = tabledata;
$scope.gridOptions = {
    data: 'data',
    enablePinning: true,
    columnDefs: [{ field: "Market", width: 60, pinned: true },
                { field: "Year", width: 60 },
                { field: "Sales", width: 60 },
                { field: "CustomerName", width: 60 }]
};
console.log($scope.data);
});

alphabeta.html代码:

<div> <div ng-controller="reservationTotalsCtrl"> <div class="gridStyle" ng-grid="gridOptions"></div> </div> </div>

你能帮帮我吗?

试着这样定义你的决心:

resolve: {
    'alphadata': ['alphatradingService', function(alphatradingService){
        return alphatradingService.get();
    }]
}

很抱歉,我很晚才看到你的问题。但我的回答可能会帮助其他陷入类似问题的人。查看错误的基本情况,即

错误:[$injector:unp]未知提供程序:

这意味着您没有正确解决注入器的依赖关系,正如angularjs文档中提到的,注入器在您的情况下似乎是一项服务。

你本可以试试:

resolve: {
    alphadata: function(alphatradingService){
        return alphatradingService.get;
    }

在您的服务

$scope.get = get (get is your function defined in services)