javascript - 如何在 javascript/angular 函数中为全局变量设置值?

标签 javascript angularjs variables functional-programming global-variables

<分区>

好吧,我需要在不同的 Angular Controller 或任何函数中使用一个变量,我可以这样做,但在这种特殊情况下,我从服务或函数中获取这些变量之一的值,如您所愿调用它,这是代码

//global variable userdata
userdata = {};

ng.tcts.service('$user', function($http, $q, $window, $boots){
return{

    login: function(data){
        var deferred = $q.defer();

        $http({
            method:'POST',
            url:ng.api+'/log/in',
            data:{
                    data:data
                },
            headers:{'Content-type':'application/x-www-form-urlencoded'}        
        }).success(function(response, status, headers, config){
            if(response.success){
                console.log(response);
                //userdata assignation
                userdata = response.data;  
                deferred.resolve([response.respnum, response.success, response.report, response.data]);
            }
            else{
                deferred.resolve([response.respnum, response.success, response.report, response.data]);
            }
        }).error(function(response, status, headers, config){
            deferred.reject([response.respnum, response.success, response.report]);
        });
        return deferred.promise;        
    }

);

如您所见,我在成功函数中将 response.data 的值赋值给用户数据,当我在函数环境中使用它时它工作正常,赋值工作正常,但是当我尝试在它之外使用它时,对象是空的,我希望你能帮我解决这个问题,谢谢

最佳答案

您需要做的就是创建一个获取和设置用户数据的服务,并将数据保存在服务中。然后你创建一个返回该数据的方法,你可以将它注入(inject)你应用程序中的任何 Controller 。

app.service('userData',function(){
var data;

this.get = function() {
    // do your ajax call to get your user data and in the response data = response;
}

this.data = function() {
    return data;
}
});

然后在任何 Controller 中:

function myCtrl($scope,userData) {
    // you can access it with this userData.data();

    // or set it to a $scope var

    $scope.userData = userData.data();
}

创建一个全局变量不是你使用 Angular 的方式,你可以创建一个服务,然后将其注入(inject)到你的 Controller 中,这样多个地方就可以与该数据对话,或者你可以将它设置为 $rootScope var,然后在任何地方引用它 Controller 。永远不要创建全局变量并在 Controller 中引用它。这就是您最终会在 Angular 中发生内存泄漏的原因。

关于javascript - 如何在 javascript/angular 函数中为全局变量设置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23410997/

相关文章:

javascript - Ghost Blog 为页面的菜单项提供当前类

javascript - 当没有互联网连接时停止所有 future 调用的更好方法

jQuery 变量到 ID 问题

qt - 在其他其他QML文件的QML中声明全局属性

javascript - 使用本地存储来存储AngularJS数据

javascript - 哪些字符对 window.name 有效?

javascript - 在行元素显示为图 block 的页面上进行过滤

javascript - Phonegap 构建 - 未捕获的类型错误 : Cannot read property 'getPicture' of undefined

javascript - 哪里有适用于 HTML5 的所有 Javascript API 的好资源

javascript - Angular Material,侧边栏中的列表不可滚动