【问题标题】:Error [$injector:unpr] when injecting sanitize dependency注入清理依赖项时出错 [$injector:unpr]
【发布时间】:2016-09-05 20:31:44
【问题描述】:

我正在尝试使用来自AngularUIBootstrapprogressBar

我有一个 objectFactory.js 文件:

(function () {
    var objectiveFactory = function ($http, animate) {
        debugger;
        return {
            getObjectives: function () {                
                return $http.get('/api/Objective/');
            }
        };

    };
    debugger;
    try {
        //objectiveFactory.$inject = ['$http', '$animate', '$sanitize'];// error
        objectiveFactory.$inject = ['$http', '$animate'];// no error
        angular.module('app', []).factory('objectiveFactory', objectiveFactory);
    }
    catch (e)
    {}    
}());

这真的很奇怪,但是如果我添加新的依赖 $sanitize:

objectiveFactory.$inject = ['$http', '$animate', '$sanitize'];// not working

然后我有一个错误:

angular.js:13920 错误:[$injector:unpr] http://errors.angularjs.org/1.5.8/$injector/unpr?p0=sanitizeProvider%20%3C-%20sanitize%20%3C-%20objectiveController 在错误(本机) 在http://localhost:15533/Scripts/angular.min.js:6:412http://localhost:15533/Scripts/angular.min.js:43:174 在 Object.d [as get]

'$http''$animate',injections 完美运行。

我探索了很多信息,并在我的 Web API 应用程序中仔细检查了以下建议:

  1. 我检查了angular'js 文件和angular-sanitize.js 的版本,它们是相同的1.5.8

  2. 我的捆绑文件如下所示:

     bundles.Add(new ScriptBundle("~/bundles/angularjs").Include(
                 "~/Scripts/jquery-1.10.2.min.js",
                 "~/Scripts/bootstrap.min.js",
                 "~/Scripts/angular.min.js",                     
                 "~/Scripts/angular-animate.min.js",
                 "~/Scripts/angular-sanitize.min.js",
                 "~/Scripts/ui-bootstrap-tpls-2.1.3.js",  
                 "~/Scripts/objectiveFactory.js",
                 "~/Scripts/objective.js"
    
                 ));
    
  3. 我尝试过各种注入方式:

    objectiveController.$inject = ['$scope', '$http', 'objectiveFactory', '$animate', 'ngSanitize'];
    objectiveController.$inject = ['$scope', '$http', 'objectiveFactory', '$animate', '$sanitize'];
    objectiveController.$inject = ['$scope', '$http', 'objectiveFactory', '$animate', 'sanitize'];
    

但是,错误是一样的:

angular.js:13920 错误:[$injector:unpr] 未知提供者:

有人知道我做错了什么吗? ('$http'injection 完美运行)

【问题讨论】:

  • 您是否将 ngSanitize 注入到您的主模块中?
  • @PoyrazYilmaz 哎呀,主要模块是什么?我只有两个 JavaScript 文件:objectoveFactoryobjectiveController
  • angular.module('app', []) 这是你的主模块,你没有在这里注入任何东西。 $https 可以正常工作,因为它带有核心,但您必须注入 ngSanitize 才能使 $sanitize 工作......
  • @PoyrazYilmaz 谢谢!有用!发表你的答案,我会标记它!
  • 他不能注入控制器吗?

标签: javascript angularjs asp.net-mvc twitter-bootstrap


【解决方案1】:

ngSanitize 注入您的主模块以使用 $sanitize...

你也需要为 $animate 做同样的事情,注入 ngAnimate

【讨论】:

  • 他不能注入控制器吗?如果他有多个控制器,那不是更模块化吗?
  • @Mawg ngSanitize 是一个 angularjs 模块,因此您无法将其注入控制器,但您可以将其注入您的模块。如果您只想在子模块中使用它,则仅将其注入子模块中。
  • 我不知道!我之所以问,是因为我在搜索尝试直接注入控制器时遇到的问题时发现了这个问题。所以,给你加一个,现在我要去寻找一个教程:-)
猜你喜欢
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
  • 2016-08-04
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 2019-08-22
相关资源
最近更新 更多