AngularJS,MVC.Unknown提供者:$ ScopeProvider< - $ Scope< - userCtrl

时间:2015-01-21 08:41:15

标签: javascript c# asp.net-mvc angularjs asp.net-web-api

我的angularscript出现错误,我正在尝试从web api加载一些数据并尝试使用ng-repeat来理解Angular的基础知识。 https://docs.angularjs.org/error/ $注射器/ unpr?P0 = $ ScopeProvider%20%3 C-%20 $范围%20%3 C-%20userCtrl

我的代码看起来像这样

我有一个从_Layout.cshtml加载的app.js,它只包含:

angular.module('myApp', []);

然后我的user-controller.js也从_Layout.cshtml加载如下:

angular.module('myApp')
.controller('userCtrl', ['$Scope', '$http', function ($scope, $http) {
    $scope.loading = true;

        $http.get('/api/user')
            .success(function (data) {
        $scope.users = data;
        $scope.loading = false;
    }).error(function () {
        $scope.error = "An error has occured while loading posts!";
        $scope.loading = false;

    });
    }]);

然后这就是我的HTML:

@{
    ViewBag.Title = "Users";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<html ng-app="myApp" >
<head>
    <meta name="viewport" content="width=device-width" />
    <title></title>

</head>
<body ng-controller ="userCtrl">
    <h1>Users</h1>
    <div class="container">

        <div ng-repeat="user in userCtrl.users">
            First name: {{user.FirstName}}<br />
            Last name: {{user.LastName}}<br />
            Age: {{user.Age}}<br />
            City: {{user.City}}

        </div>
    </div>
</body>
</html>


bundles.Add(new ScriptBundle("~/bundles/usercontroller").Include(
                "~/Scripts/App/user-controller.js"));

bundles.Add(new ScriptBundle("~/bundles/angularjs").Include(
                      "~/Scripts/angular.min.js",
                      "~/Scripts/App/app.js"));

然后我在_Layout中有这个

@Scripts.Render("~/bundles/angularjs")
    @Scripts.Render("~/bundles/usercontroller")

我的问题是在ng-repeat中我有“user in userCtrl.users”我将其更改为“用户中的用户”,因为控制器已经定义在现在它似乎正在工作:)

1 个答案:

答案 0 :(得分:1)

你试图用资本注入依赖关系&#34;范围&#34;,你也不需要注入$ http作为依赖。

如果你的控制器看起来像:

.controller('userCtrl', ['$scope', function ($scope, $http) {

应该修复。