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 エンジンがクロージャを作成しなかったためだと思います。

console.log($cookies)login メソッド内で実行してみてください。

于 2013-09-24T10:26:07.620 に答える