Я действительно новый с AngularJS, и я работал в одном примере за несколько дней https://github.com/cornflourblue/angular-registration-login-example. Дело в том, что я пытаюсь прочитать куки файл, который я отправил с сервера, и в этом примере библиотека углов файлов cookie настолько старая, как (1.2), поэтому я заменил ее на новую. Проблема возникает, когда я пытаюсь получить доступ к методу run, у меня нет доступа к $ cookies var, я пытался ввести его без инъекций.
На самом деле я понятия не имею, что происходит. Поэтому, если вы мне немного поможете (&& ||), рекомендуйте мне самые новые и более приятные примеры.
(function () { 'use strict'; var app = angular .module('app', ['ngRoute', 'ngCookies']) .config(config) .run(run); config.$inject = ['$routeProvider', '$locationProvider']; function config($routeProvider, $locationProvider) { $routeProvider .when('/', { controller: 'HomeController', templateUrl: 'AngularJS/home/home.view.html', controllerAs: 'vm' }) .when('/login', { controller: 'LoginController', templateUrl: 'AngularJS/login/login.view.html', controllerAs: 'vm' }) .when('/register', { controller: 'RegisterController', templateUrl: 'AngularJS/register/register.view.html', controllerAs: 'vm' }) .otherwise({ redirectTo: 'AngularJS/login' }); } run.$inject = ['$rootScope', '$location', '$http']; function run($rootScope, $location, $http, $cookies) { //I want to use $cookies here, but i canno't seem a possible way. // keep user logged in after page refresh $rootScope.globals = $cookies.get('globals') || {}; if ($rootScope.globals.currentUser) { $http.defaults.headers.common['Authorization'] = 'Basic ' + $rootScope.globals.currentUser.authdata; // jshint ignore:line } $rootScope.$on('$locationChangeStart', function (event, next, current) { // redirect to login page if not logged in and trying to access a restricted page var restrictedPage = $.inArray($location.path(), ['/login', '/register']) === -1; var loggedIn = $rootScope.globals.currentUser; if (restrictedPage && !loggedIn) { $location.path('/login'); } }); } })();
Извините за мои плохие навыки в английском... (Не моя мать): ·)
Большое спасибо.
Вы забыли добавить $cookies
в run.$inject
array.
Более того, определение массивов .$inject
является необязательным, если вы используете стандартные имена зависимостей в параметрах ваших компонентных функций. Здесь удаление ваших .$inject
определений должно оставить вас с более легким и функциональным приложением.