AngularJs清除全局变量

时间:2013-10-11 16:34:56

标签: angularjs

我正在使用全局变量与外部JavaScript进行通信。所以我用

window.report = $scope.myData  // my scope with all data

问题是,当我尝试运行其他报告时,我应首先重置此全局变量,然后再次填充它。

我尝试过:

window.report = null;

window.report = {};

但如果没有要覆盖的新数据,旧数据仍然存在....

这可能是导致问题的部分模板缓存吗?

我试图在window.report变量上登录控制台并且未定义。所以问题应该在其他地方......

[UPDATE]

这里的问题可能是服务。

app.factory('Report', ['$http', function($http,$q){

var Reports = {

    reports : {},

    requests :[{'url':'getReport','response':'Analizing page','count':1},
               {'url':'getPagerank','response':'Getting 1','count':2},
               {'url':'getRobots','response':'Getting 2','count':3},
               {'url':'getIpCanonicalization','response':'Gwetting 3','count':4}]

              ]

};

Reports.getReport = function(target, source, response, callback) {
    return $http({  url:"/seo/getter/", 
                    method:"POST", 
                    //cache: true,
                    params:{"url" : target, "action": source}
                }).success(function(result) {
                    callback(result);
                    console.log(Reports.reports)
                    jQuery.extend(true,Reports.reports, result.data)
                    //console.log($scope.user)
                }).error(function(error){
                    callback(result);
                    jQuery.extend(true,Reports.reports, result.data)
                })
}

    Reports.startQueue = function (target, callback) {
        var promises = [];
        this.requests.forEach(function (obj, i) {
            promises.push(Reports.getReport(target, obj.url, obj.response, function(response,reports){
                callback(obj.response,Reports.reports,obj.count)
            }));
        });
    }

return Reports;
}])

我认为当我尝试更新视图时,Reports.reports var仍然包含旧数据。所以问题不应该是全局变量,而是一个仍然抓住以前数据的服务。我更新时如何确定Report.reports为空?

2 个答案:

答案 0 :(得分:0)

不要使用窗口,不要把var放在它前面。此外,您无法通过技术删除全局变量,而这只是基本的javascript。

答案 1 :(得分:0)

我已经解决了为我的服务添加新功能的问题,并且在所有过程之后我重置了我的服务var:

    Reports.resetReports = function () {
        Reports.reports = {};
    }