2013-10-11 269 views
0

我正在使用全局變量與外部javascript進行通信。所以我用AngularJs清除全局變量

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

問題是,當我嘗試運行報告行吟詩人,我應該首先重置這個全局變量,然後再填寫一次。

我曾嘗試用:

window.report = null; 

window.report = {}; 

但舊的數據仍然存在,如果沒有新的數據覆蓋....

可能是這部分模板緩存引起該問題?

我試圖登錄控制檯的window.report變量,並且是未定義的。所以,問題應該是在別處......

[更新]

這裏的問題可能是一個服務。

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在更新時爲空?

+1

嘗試在角碼$窗口,這樣你的角度可以訪問到window對象。你可以嘗試不斷的 – Whisher

+0

總是嘗試!可能是緩存問題? – Tropicalista

+0

嘗試發佈更多的代碼 – Whisher

回答

0

我已經解決了添加新的功能,我的服務,所有的過程之後重置我的服務VAR:

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

不要使用窗口只是不要把VAR放在它的前面。你也無法刪除一個全局變量,只是基本的JavaScript。