angularjs + 下载 csv 文件 + 错误: [$injector:unpr] 未知提供程序

angularjs + download csv file + Error: [$injector:unpr] Unknown provider

本文关键字:unpr 未知 程序 injector csv 下载 文件 错误 angularjs      更新时间:2023-09-26

我是 angularjs 的新手。

我尝试下载csv文件。所以我尝试使用角度清理和 ng-csv 文件。

索引.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <script src="vendor/theme_files/js/jquery.min.js"></script>
    </head>
    <body ng-app="myApp" class="nav-md">
        <div class="container body" ui-view></div>

        <script src="vendor/angular/angular.js"></script>
        <script src="vendor/angular-resource/angular-resource.js"></script>
        <script src="vendor/angular-ui-router/release/angular-ui-router.js"></script>
        <script src="js/services/lb-services.js"></script>
        <script src="vendor/angular-sanitize/angular-sanitize.js"></script>
        <script src="vendor/ng-csv/ng-csv.min.js"></script>
        <script src="js/app.js"></script>
        <script src="js/controllers/offerLetterCtl.js"></script>
        <script src="js/services/offerLetter.js"></script>
    </body>
</html>

应用.js

angular.module('myApp', ['lbServices', 'ui.router']).config(['$stateProvider', '$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
    $stateProvider.state('login', {
        url : '/login',
        templateUrl : 'views/login.html',
        controller : 'loginController'
    }).state('addOfferletter', {
        url : '/create_offerletter',
        templateUrl : 'views/create_offer_letter.html',
        controller : 'offerLetterController'
    });
    $urlRouterProvider.otherwise('login');
}]);

offerLetterCtl.js(控制器文件夹)

angular.module('myApp').controller('offerLetterController', ['$scope', '$location', 'offerLetterService',
    ,function($scope, $location, offerLetterService) { 
        //mycode
}]);

报价信函.js(服务文件夹)

angular.module('myApp').factory('offerLetterService', ['$q', '$timeout', '$http',
function($q, $timeout, $http,OfferLetter) {
        //mycode
}]);

create_offer_letter.html

<button type="button" ng-csv="getArray()" csv-header="['Field A', 'Field B', 'Field C']" filename="test.csv">
        Export
</button>

我点击了此链接进行csv下载。 在此处输入链接说明

如果我在控制器中包含此行

['ngSanitize', 'ngCsv']

 angular.module('myApp').controller('offerLetterController', ['$scope', '$location', 'offerLetterService',"ngSanitize", "ngCsv"
    ,function($scope, $location, offerLetterService, ngSanitize, ngCsv) {
        $scope.filename = "test";  
}]);

错误详细信息:

 Error: [$injector:unpr] Unknown provider: ngSanitizeProvider <- ngSanitize <- offerLetterController
http://errors.angularjs.org/1.3.20/$injector/unpr?p0=ngSanitizeProvider%20%3C-%20ngSanitize%20%3C-"<div class="container body ng-scope" ui-view="">"fferLetterController
我认为

您没有将ngSanatize模块添加到应用程序中的应用程序.js。尝试如下:

angular.module('myApp', ['lbServices', 'ui.router', 'ngSanitize']).config(['$stateProvider', '$urlRouterProvider',

函数($stateProvider, $urlRouterProvider) {

这至少是错误的:

angular.module('myApp').controller('offerLetterController', ['$scope', '$location', 'offerLetterService',"ngSanitize", "ngCsv" ,function($scope, $location, offerLetterService) {

你的错误是你在第一部分有 5 个服务,而你只真正注入了 3 个。如果您对齐这些内容,它将有所帮助:

 angular.module('myApp').controller('offerLetterController', ['$scope', '$location', 'offerLetterService',"ngSanitize", "ngCsv" ,function($scope, $location, offerLetterService, ngSanitize, ngCsv) {

除此之外,这也不对:

angular.module('myApp').factory('offerLetterService', ['$q', '$timeout', '$http',
function($q, $timeout, $http,OfferLetter) {

您正在定义工厂,称为offerLetterService,我想您不想将其插入其中吗?

已从控制器中删除注入。这应该有效!

angular.module('myApp').controller('offerLetterController', ['$scope', '$location', 'offerLetterService'
    ,function($scope, $location, offerLetterService) {
        $scope.filename = "test";  
}]);
相关文章: