2017-05-27 75 views
0

我想獲取一個css文件的文件內容並試圖將其存儲在一個變量中,我將在以後使用它。我正在使用XMLHttprequest獲取file.When我試圖把控制檯內onreadystatechange輸出是完美的,但當試圖在它之外的同樣的東西它顯示空變量的結果。我聽說過$ apply和其他的東西,但是有沒有另一種方式來做到這一點,我在哪裏去了?...在​​此先感謝... 這是代碼如何更新XMLHttprequest之外的範圍變量

$scope.files={}; 
    var client = new XMLHttpRequest(); 
    client.open('GET', '/your_css/bootstrap.css'); 
    client.onreadystatechange = function() 
    { 
     var bootstrap=client.responseText; 
     css.file("bootstrap.css",bootstrap); 
     $scope.$applyAsync(function(){ 
      $scope.files.bootstrap=bootstrap; 
     }) 
    } 
    client.send(); 

回答

0

你剛纔所描述的行爲的原因是,onreadystatechange不執行,只是d efined。 client.send()正在發送提取文件的請求,並且onreadystatechange僅在響應(和文件)到達瀏覽器時才執行。 「之後」onreadystatechange只是在位置之後,但就時間而言是在此之前。 onreadystatechangecallback。你想讓你的asynchronous request表現同步,但這是一個壞主意和糟糕的設計。我建議你習慣異步請求,因爲在客戶端等待請求完成是一個壞主意,如果你有多個請求,它們會變得更糟,所有請求都會同步執行。這真的會傷害到性能。

1

使用AngularJS $http Service包裝了XHR API,並與AngularJS框架集成:

$http.get('/your_css/bootstrap.css').then(function (response) { 
    $scope.files.bootstrap = response.data; 
});