我的基本前提是我想回到服务器以获取登录用户,以防有人访问该站点并仍然登录。在页面上我想调用此方法。由于我将用户服务传递给我的所有控制器,我不知道哪个控制器将被使用,因为我不知道他们登陆的是哪个页面。
我有以下用户服务
app.factory('userService', function ($window) {
var root = {};
root.get_current_user = function(http){
var config = {
params: {}
};
http.post("/api/user/show", null, config)
.success(function(data, status, headers, config) {
if(data.success == true) {
user = data.user;
show_authenticated();
}
});
};
return root;
});
这是一个空控制器,我正在尝试将服务注入
app.controller('myResourcesController', function($scope, $http, userService) {
});
因此,在我的索引文件的顶部,我希望有一些类似
的内容controller.get_current_user();
这将从所有页面调用,所以我不确定这里的语法。我发现的所有示例都与调用特定控制器有关,通常来自另一个控制器。也许这需要在某个地方进入我的angularjs,而不仅仅是在索引页面上的脚本标记内。
答案 0 :(得分:2)
您可以在角度应用程序的run
方法中运行工厂初始化。
https://docs.angularjs.org/guide/module#module-loading-dependencies
E.g。
app.run(['userService', function(userService) {
userService.get_current_user();
}]);
userService
工厂应该存储经过身份验证的用户对象。
...
if (data.success == true) {
root.user = data.user;
}
...
然后您就可以在任何控制器中使用您的工厂
app.controller('myController', ['userService', function(userService) {
//alert(userService.user);
}]);
答案 1 :(得分:1)
您需要通过工厂构造函数注入$ http,以获取第一个
app.factory('userService', function ($window, $http) {
var root = {};
root.get_current_user = function(){
var config = {
params: {}
};
$http.post("/api/user/show", null, config)
.success(function(data, status, headers, config) {
if(data.success == true) {
user = data.user;
show_authenticated();
}
});
};
return root;
});
在你的控制器中你可以说
$scope.get_current_user = UserService.get_current_user();
如果需要,在你的html中输入属性。除此之外,我不确定你需要什么。