Javascript AngularJS从外部控制器调用公共控制器函数

Javascript AngularJS从外部控制器调用公共控制器函数,javascript,angularjs,angularjs-service,angularjs-controller,Javascript,Angularjs,Angularjs Service,Angularjs Controller,我的基本前提是,如果有人访问该站点并且仍然登录,我希望回拨服务器以获取登录的用户。在页面上,我想调用这个方法。由于我正在将用户服务传递给我的所有控制器,我不知道哪个控制器将被使用,因为我不知道它们在哪个页面上登陆 我有以下用户服务 app.factory('userService', function ($window) { var root = {}; root.get_current_user = function(http){ var config = {

我的基本前提是,如果有人访问该站点并且仍然登录,我希望回拨服务器以获取登录的用户。在页面上,我想调用这个方法。由于我正在将用户服务传递给我的所有控制器,我不知道哪个控制器将被使用,因为我不知道它们在哪个页面上登陆

我有以下用户服务

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中的某个地方,而不仅仅是在我的索引页上的脚本标记中。

首先需要通过工厂构造函数注入$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中添加属性。除此之外,我不确定您需要什么。

您可以在角度应用程序的
run
方法中运行工厂初始化。 例如

userService
工厂应该在内部存储经过身份验证的用户对象

...
if (data.success == true) {
  root.user = data.user;
}
...
然后,您将能够在任何控制器中使用您的工厂

app.controller('myController', ['userService', function(userService) {
   //alert(userService.user);
}]);

当Angular初始化时,有什么原因不能调用该服务吗?我不明白为什么你需要从任何地方调用它,如果你只需要在页面刷新时使用它,这是Angular初始化的唯一时间。我不知道为什么我没有想到,这可能是放置它的最佳位置。我只在外部存储它,以便页面上的其他项目可以与它交互。
app.controller('myController', ['userService', function(userService) {
   //alert(userService.user);
}]);