2
angular.module('site.controllers', ['ngCookies'])
    .controller("LoginController", ["$scope", "$http", "$cookies", function($scope, $http, $cookies){
        debugger; // can access $cookies here
        $scope.login = function(){
            debugger; // ReferenceError: $cookies is not defined
            var credentials = {
                'username': $scope.username,
                'password': $scope.password
            };
            $http.post('/login', credentials)
                .success( function(data, status, headers, config){
                    $scope.template = $scope.templates[2];
                })
                .error( function(data, status, headers, config){
                    debugger;
                    $scope.template = $scope.templates[2];
                //TODO: info for user that login failed
                });
        };
    }])
;

我不知道为什么 $cookies 服务在 LoginController 直接正文中可用,但在 LoginController 的登录功能中不可用。

$scope 和 $http 在这两个地方都可用,但是 $cookies 服务是有问题的。

这些文件包含在 HTML 头中:

<script type="text/javascript" src="static/lib/angular/angular.js"></script>
<script type="text/javascript" src="static/lib/angular/angular-cookies.js"></script>
4

1 回答 1

4

我认为只要您使用它,它就可以在登录方法中访问。如果您尝试仅使用 来查看数据debugger,那么您将无法在调试控制台中获得它。我认为这是因为 js 引擎没有创建闭包,因为您没有在 login 方法中引用该属性。

尝试做console.log($cookies)内部登录方法。

于 2013-09-24T10:26:07.620 回答