javascript - Angularjs Factory 在 Controller 中未定义

标签 javascript angularjs

我是 Angular JS 的新手,现在我正在尝试使用工厂来使代码更清晰。但现在我收到以下错误:

$injector:unpr(Unknown provider).

我卡在这里,找不到问题出在哪里。服务和这个 Controller 实际上在不同的文件中,然后我尝试将它们放在一起,但仍然不起作用。如果您能帮助我找出我的问题,我将非常高兴。

var app = angular.module('myApp', ['ngRoute']);
app.factory('AuthenticationService', ['$scope', '$location', function($scope, $location){

var currentUser;

return {
    login: function(username, password){
        var endPoint = "http://localhost:8080/RestServer/main/just/Authorize";
        var jsonData = {
            username: username,
            password: password
        };
        var jsonString = JSON.stringify(jsonData);

        $http.post(endPoint, jsonString,{headers: {'Content-Type': 'application/json'}}).success(function (data,status, headers ){

            if(data.access == "ok")
            {
                $location.path("learning");
            }
            else
            {
                $location.path("error");
            }

        });
    },
    logout: function(){},
    isLoggedIn: function(){},
    curUser: function(){return currentUser}
};
}
]);
app.controller('loginController',['$scope', 'AuthenticationService',      function($scope, AuthenticationService)
{
    $scope.login = function()
    {
        AuthenticationService.login($scope.username, $scope.password);
    }
}]);

这是 html:

 <html data-ng-app="myApp">
 <head>
<script src="https://code.angularjs.org/1.5.0-rc.0/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0-rc.0/angular-route.min.js"></script>
<script src="Scripts/app.js"></script>
<script src="Scripts/services.js"></script>
<script src="Scripts/controllers.js"></script>
 <link href="CSS/bootstrap.min.css" rel="stylesheet">
 <title>Welcome!</title>
 </head>
 <body>
 <div class="container theme-showcase" role="main" ng-view="">

 </div>

 </body>

最佳答案

只需从工厂中删除 $scope 即可,您通常不会在工厂、服务或提供商内使用 $scope,还要添加 $http 作为依赖项,因为您正在进行 $http 调用

app.factory('AuthenticationService', [ '$location','$http', function( $location,$http){
}

这是工作 Application

关于javascript - Angularjs Factory 在 Controller 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34477784/

相关文章:

angularjs - 使用Angular的多个* Window *应用程序

javascript - 无法访问 JavaScript 对象属性

javascript - react route 的大写情况

javascript - 如何在 jQuery-3.3.1 中调用 $(window).on ("load", function) ?

javascript - 如何使用 AngularJS 推送到 MongoDB 数组?

javascript - id自增前端逻辑

javascript - 可以将 coffeescript/javascript 中的其他对象属性动态添加到现有对象吗?

javascript - 如何使用 React 从 ReqRes API 渲染用户列表

angularjs - Angular UI Bootstrap 模式和文本框

angularjs - 尝试使用 Sequelize 在循环中从数据库中删除多个值时出错