角度错误TypeError:<service-name>不是函数

时间:2016-01-12 12:26:50

标签: javascript angularjs service login

我正在编写一个基本的登录应用程序。我有

./ JS / app.js

'use strict';

var drfmApp = angular.module('drfmApp', [
    'ngRoute','drfmControllers'
]);

./ JS /控制器/ LoginController.js

'use strict';

var drfmControllers = angular.module('drfmControllers', []);


drfmControllers.controller('LoginController', ['$scope','$location',

    function($scope,LoginService) {

        $scope.login = function () {

          console.log($scope.user.username);
          LoginService.login();
        }
    }
]);

./ JS /服务/ LoginService.js

'use strict';

drfmApp.factory('LoginService',function(){

    return {
        login:function(){
            console.log("enter function login service");
        },
        logout:function(){
            console.log("enter functuon logout service");
        }
    }
});

最后是部分查看HTML

<div class="container-fluid">
    <div class="row">
        <div class="col-md-8">

            <header>Wellcome, {{user.username}}</header>

            <blockquote>
                <p>
                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.
                </p> <small>Someone famous <cite>Source Title</cite></small>
            </blockquote>
        </div>
        <div class="col-md-4">
            <form class="form-horizontal" role="form" name="form" ng-submit="login()" >
                <div class="form-group">

                    <label for="username" class="col-sm-2 control-label">
                        Username
                    </label>
                    <div class="col-sm-10">
                        <input type="text" name="username" id="username" class="form-control" ng-model="user.username" required />
                    </div>
                </div>
                <div class="form-group">

                    <label for="password" class="col-sm-2 control-label">
                        Password
                    </label>
                    <div class="col-sm-10">
                        <input type="password" name="password" id="password" class="form-control" ng-model="user.password" required />
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-offset-2 col-sm-10">
                        <div class="checkbox">

                            <label>
                                <input type="checkbox" /> Remember me
                            </label>
                        </div>
                    </div>
                </div>
                <div class="form-actions">
                    <div class="col-sm-offset-2 col-sm-10">

                        <button type="submit" ng-disabled="form.$invalid" class="btn btn-primary">Login</button>
                        <a href="#/register" class="btn btn-link">Register</a>

                    </div>
                </div>
            </form>
        </div>
    </div>
</div>

但我总是有这个错误

TypeError:login不是函数

点击页面的“登录”按钮。

有人可以帮我吗?

先谢谢

2 个答案:

答案 0 :(得分:2)

  

在类似数组的依赖注入中,array中的项被映射到控制器函数的arguments

试试这个:

drfmControllers.controller('LoginController', ['$scope', 'LoginService',
  function($scope, LoginService) {//can be used as `function(s, l)`
    $scope.login = function() {
      console.log($scope.user.username);
      LoginService.login();
    }
  }
]);

答案 1 :(得分:1)

您正在注入$ scope和$ location,而不是您的登录服务。为了使用它,你必须先注射它。

将其更改为:

drfmControllers.controller('LoginController', ['$scope','LoginService', function($scope, LoginService) {
        $scope.login = function () {
          console.log($scope.user.username);
          LoginService.login();
        }
    }
]);