Я пытаюсь ограничить доступ пользователя к просмотру /topics
и виду /question
. У меня есть форма входа на главную страницу. Мой HomeCtrl имеет следующую функцию входа:
$scope.doLogin = function() {
var user = {
username: $scope.username,
password: $scope.password
}
$http.post('data/user/users.json',
user
).success(function(data, status, headers, config) {
userService.isAuthenticated = true;
userService.username = data.username;
userService.password = data.password;
$location.path('/topics');
console.log('Yay! You logged in.')
}).error(function(data, status, headers, config) {
userService.isAuthenticated = false;
userService.username = '';
userService.password = '';
$scope.errorMessage = 'Failed to log in. Please check username and password.'
});
}
И у меня есть завод создан для обработки текущего состояния данных:
angular.module('myApp.userService', []).
factory('userService', function() {
var credentials = {
username: '',
password: '',
isAuthenticated: false
};
return credentials;
});
И это мой $ routeProvider:
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/', {
templateUrl: 'partials/home.html',
controller: 'HomeCtrl'
}).
when('/topics', {
templateUrl: 'partials/topics.html',
controller: 'TopicCtrl',
//resolve: isAuthenticated
}).
when('/question', {
templateUrl: 'partials/question.html',
controller: 'QuestionCtrl',
//resolve: isAuthenticated
}).
when('/terms', {
templateUrl: 'partials/terms.html',
controller: 'TermsCtrl'
}).
otherwise({
redirectTo: '/'
});
}]);
Я пробовал установить следующее:
resolve: {
doLogin: HomeCtrl.doLogin
}
Но что возвращает следующее сообщение об ошибке:
Failed to instantiate module myApp due to: ReferenceError: HomeCtrl is not defined at http:// localhost/2014-02-10/app/js/app.js:33:18 at Object.d [as invoke]
Любая помощь очень ценится - Я смотрел на это весь день, и это сводит меня с ума.
Большое спасибо! Я решился, но это прекрасно работает. Я подключил .run к моему userService, и он отлично работает с изменениями переменных. Я ценю помощь. Благодарю. – robertbabington
$ route.routes [nextPath] - не работает, когда в URL-адресе формы/whatever /: param присутствует параметр – Jasper