发布网站时出现角度未知提供程序错

时间:2016-01-08 23:20:28

标签: c# angularjs angular-module

我开发了一个小应用程序,现在我想第一次将它发布到azure。

这是我第一次在任何项目中使用角度而且我出错了。  我收到这个错误:

错误:[$ injector:unpr]未知提供者:sProvider< - s< - MapController

这是我的控制者:

 var app = angular.module("TravelPlanner", []);


var mapController = function ($scope, $http) {
    lots of functions....

 }


   app.controller("MapController", mapController);

这是我的布局页面:

 <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
@Styles.Render("~/Content/css")
@Styles.Render("~/Content/kendo/css")

@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&key=AIzaSyASli52h7eL3W1CSNtTrl-S71zDFATqbDg&libraries=places"></script>
@Scripts.Render("~/bundles/bootstrap")
    @Scripts.Render("~/bundles/kendo")
<script src="~/ckeditor/ckeditor.js"></script>



@*<script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
<script src="~/Scripts/plugin.min.js"></script>*@
</head>
<body ng-app="TravelPlanner">
   <div class="container body-content" ng-controller="MapController">
             @RenderBody()
    </div>


@RenderSection("scripts", required: false)
</body>

为什么我会得到这个角度误差?

**编辑**   这是我加载脚本的包。

         bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                  "~/Scripts/bootstrap.js",
                  "~/Scripts/respond.js",
                  "~/Scripts/Angular.js",
                   "~/Scripts/DropZone.js",
                  "~/Content/Scripts/gmaps.js",
                  "~/Content/Scripts/jquery.geocomplete.min.js",
                  "~/Scripts/jquery-ui-1.11.4.min.js",
                  "~/Content/Scripts/MapController.js",
                  "~/Content/Scripts/sweetalert.min.js"
                 ));

mapcontroller.js是我所有的angular / js代码所在的位置。 (不知道为什么我没有更改捆绑的名称,猜我是懒惰的)

2 个答案:

答案 0 :(得分:2)

您需要为mapController

注释您的依赖项
var mapController = ['$scope', '$http', function ($scope, $http) {
    lots of functions....

 }];

点击此链接:https://docs.angularjs.org/guide/di#dependency-annotation

答案 1 :(得分:0)

你不能使用&#34;标准&#34;最小化AngularJS应用程序。 ASP.NET捆绑包。有两种选择:

  1. 不要最小化AngularJS app 文件,只删除它的空格和注释(有一些nuget包可以做到这一点)。
  2. 使用显式注入器注释,并使用标准技术最小化.js文件,您必须更改控制器:

    app.controller(&#34; MapController&#34;,mapController);

  3. 成:

    app.controller("MapController", ['$http', mapController]);
    

    有关注射器的更多信息,请in official documentation