部署后AngularJs脚本不起作用,它会出错[$ injector:unpr]

时间:2016-11-16 18:46:21

标签: c# angularjs asp.net-mvc

我一直在构建一个Web项目,我不时尝试发布,看看它在localhost中的样子。这一次,我添加了angularjs来获取/显示货币并再次部署项目。但是,它会向浏览器中的用户显示{{currency}}。

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);
                })

});

我做错了什么?

1 个答案:

答案 0 :(得分:3)

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

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依赖于依赖注入。在开发模式下,参数($scope$http)具有相同的名称,AngularJS会毫无问题地注入依赖项(具有相同名称的服务),但在JavaScript文件的缩小版本中,名称为参数随机更改,因此您必须使用currencyCtrl.$inject['$scope', '$http'];代码手动注入