c# - AngularJs 脚本在部署后不起作用,它给出错误 [$injector :unpr]

标签 c# angularjs asp.net-mvc

我一直在构建一个 Web 项目,有时我会尝试发布并看到一切看起来都像在本地主机上所做的那样。这一次,我添加了 angularjs 来获取/显示货币并再次部署了项目。但是,它会在浏览器中向用户显示 {{currencies}}。

Error: [$injector:unpr] http://errors.angularjs.org/1.5.8/$injector/unpr?p0=nProvider%20%3C-%20n%20%3C-%20CurrencyController

我的 angularjs 代码看起来像这样......

app.controller("CurrencyController", function ($scope, $http) {
        $http.get('http://dummy.com/api/getcurrencyformainscreen').
                success(function (data, status, headers, config) {
                    $scope.currencies = data;
                }).
                error(function (data, status, headers, config) {
                    //alert(data);
                })

});

我做错了什么?

最佳答案

如果在部署项目时 JavaScript 文件被缩小并且 AngularJS 服务未正确“注入(inject)”,则可能会发生这种情况。如果是这样,请尝试像这样修改您的代码:

var currencyCtrl = function($scope, $http) {
  $http.get('http://dummy.com/api/getcurrencyformainscreen').
  success(function(data, status, headers, config) {
    $scope.currencies = data;
  }).
  error(function(data, status, headers, config) {
    //alert(data);
  })

};
// inject dependencies properly for minification process
currencyCtrl.$inject['$scope', '$http'];

app.controller("CurrencyController", currencyCtrl);

这是因为 AngularJS 依赖于依赖注入(inject)。在开发模式下,参数 ($scope, $http) 具有相同的名称并且 AngularJS 注入(inject)依赖项(具有相同名称的服务)没有问题,但在缩小版本中在 JavaScript 文件中,参数的名称是随机更改的,因此您必须使用 currencyCtrl.$inject['$scope', '$http'];手动注入(inject)它们;代码。

关于c# - AngularJs 脚本在部署后不起作用,它给出错误 [$injector :unpr],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40639922/

相关文章:

javascript - ion-radio 取消选中 ng-click 不起作用

asp.net-mvc - MVC模型绑定(bind)子类对象属性用字符串数组填充

c# - 如何在一次更新中将通过 EWS 获取的所有电子邮件标记为已读?

c# - C# 中是否有支持故障安全迭代的良好 IList 和 IDictionary 实现?

c# - 为什么只允许UI线程修改UI?

c# - 自定义 JQueryUI ValidationMessageFor 隐藏验证扩展方法

javascript - AngularJS TemplateURL 未显示 - 指令代码正在执行

angularjs - IE 11 无法正确渲染 masonry js

c# - 使用 RazorEngine 并发解析 Razor 模板

c# - LINQ List<> 上下移动元素