0

グローバル変数を使用して、外部 JavaScript と通信しています。だから私は使う

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 にまだ古いデータが含まれていると思います。したがって、問題はグローバル b 変数ではなく、以前のデータを引き続き取得するサービスにあるはずです。更新時に Report.reports が空であることを確認するにはどうすればよいですか?

4

2 に答える 2

0

サービスに新しい関数を追加することを解決しました。すべてのプロセスの後、サービス変数をリセットしました。

    Reports.resetReports = function () {
        Reports.reports = {};
    }
于 2013-10-12T13:57:22.790 に答える