【发布时间】:2014-01-26 14:24:42
【问题描述】:
我正在开发基于 Brian Ford 在 GitHub 上的 angular-express-blog 应用程序的 MEAN 应用程序。
我遇到的问题是我需要能够在 $locationChangeStart 上调用我的 UserService 服务,以检查是否有用户登录。我看到的大多数示例都让您在模块声明中设置$rootScope.$on('$locationChangeStart'...。这不允许我访问我的自定义服务,所以我的解决方案是将它放在控制器中并在我的主布局文件中调用它。
我已经这样设置了,但应用程序什么也没做。它甚至没有调用错误。你们有人能发现这段代码的问题吗?
这是我的 github repo.
LayoutCtrl.js:
angular.module('myApp').
controller('LayoutCtrl', function($scope, $http, UserService) {
$scope.$on( "$locationChangeStart", function(event, next, current) {
if ( UserService.getUser() === null ) {
// no logged user, we should be going to #login
if ( next.templateUrl == "partials/login.html" ) {
// already going to #login, no redirect needed
} else {
// not going to #login, we should redirect now
$location.path( "/login" );
}
}
});
});
Layout.jade:
doctype html
html(ng-app="myApp", ng-controller='LayoutCtrl')
head
meta(charset='utf8')
base(href='/')
title Angular Express Seed App
link(rel='stylesheet', href='/css/app.css')
body
block body
和 UserService.js:
angular.module('myApp').
service('UserService', function(){
var $scope = this;
var user = null;
$scope.user = {};
$scope.setUser = function(data){
user = data;
};
$scope.getUser = function(){
$scope.user = user;
};
return $scope;
});
【问题讨论】:
-
能否请您发布您的整个申请。包括所有 html/js neccecary
-
我已经发布了相关代码,因为代码很多。有什么具体的你能想到我可以从 github 存储库(包含在帖子中)复制/粘贴吗?
-
啊,它是完全过时的 1.0.3... 我认为制作种子应用程序的人一直在更新它,因为他为谷歌和所有人工作。谢谢!但是我遇到了同样的问题。
-
您是否尝试将代码放入 app.run 块中?
-
我可以在应用模块声明文件之外使用它吗?因为我的定制服务遇到了问题。
标签: javascript node.js angularjs pug