AngularJS:设置变量并在$ http服务外访问它?

时间:2014-08-08 18:22:41

标签: angularjs

我的服务有问题:

app.service('admin', function($http, $scope){ // Tried $scope but no dice...
    var self = this; self.admin = false;
    $http.get("api/login.php").success(function(reply){
            if(reply.realname !=null){
                self.admin = true;
            } else{ self.admin = false }
    });
    alert(self.admin); // this is just for debugging purposes. I know I havent got my service setup properly yet, I want to get it working properly first.

});

我想设置我的服务$ http.get,根据请求将self.admin设置为值。

关于不相关的说明: 此请求会检查您是否为管理员,这就是我能负担reply.realname !=null的原因,因为它只查找管理员用户,如果不是则不返回任何内容。

1 个答案:

答案 0 :(得分:0)

当runTarm买断时,$http会返回一个承诺。我利用了这个:

app.service('admin', function($http){
    self.adminOrNot = function(){
        var defer = $q.defer();
        var promise = $http.get("api/user.php");
        return promise;
    }
});
app.controller("mainController", function($scope, admin){
    var scope = $scope;
    admin.adminOrNot().then(function(data){
        if(data.data.error != null){
            scope.adminStatus = false;
        } else if(data.data.steamid != null){
            scope.adminStatus = true;
        }
    });
});

完美的作品!想到它,我可能应该把逻辑放在管理服务中......无论如何,它都有效!

然后,我必须做的就是在我的HTML中检索它:

<input type="image" src="media/admin.png" ng-hide="adminStatus">

我不确定这是否是最好的做事方式,但......