2017-01-06 3 views
0
 $scope.getGraph = function(hash) { 
     if ($scope.clickedFile.hash == hash) return; 

     $scope.graph = ""; 
     $scope.pictureLoaded = false; 
     $scope.loadingPic = true; 

     if (hash) { 
      $http({ 
       method: "GET", 
       url: $rootScope.baseUrl+"api/file/" + hash + '?graph' , 
      }).then(function mySucces(response) { 
       $scope.graph = response.data; 
       $scope.pictureLoaded = true; 
       $scope.loadingPic = false; 
       console.log('picture loaded') 

      }, function myError(response) { 
       //handling errors 
      }); 
     } 

    } 

この関数は、ユーザがファイルをクリックしたときにいつでも呼び出されます。目標は何らかの処理を行い、ローディングバーを表示することです。ある時点で画像が処理されるため、loadPictureをtrueに設定します。 は、この時点で私は絵がロードバー処理後に画像を表示するための角度表示がありません

<img ng-src="data:image/png;base64,{{graph}}" ng-show="pictureLoaded" style="width:40%; height:40%; display:block;margin: 0 auto;"/> 

を交換したいしかし、その代わりに、それだけで何も表示されません。 $ scope.applyを使用しようとしましたが、ダイジェストがすでに進行中であるというエラーが表示されます。 。

+0

イメージパスは正しいですか? – superUser

+0

'ng-src =" data:image/png; base64、{{graph}} "'のパスがなく、データが正しいと確信しています。私がこのページを離れて戻ってくると、画像が表示されます。しかし、私はそれをすぐにページに表示する必要があります – dkx22

+1

単純なエラーを除外するだけです: 'mySuccess'が呼び出され、' $ scope.pictureLoaded'が*正しい*スコープに書き込まれていますか? –

答えて

0

使用$は、例えば代わり をタイムアウト(

はありがとう:どちらか は、だから私は

if(!$scope.$$phase) { 
//$digest or $apply} 

内.applyそれを置くことを試みた。しかし、それは動作しません

$timeout(()=>{ 
    $scope.$apply(); 
}, 1); 
0

キャッシュに問題がある可能性があります。

私はresponse.dataの内容が正確にわかりませんが、前回と同じグラフであれば、タイムスタンプがなければイメージは更新されません。あなたが追加しようとすることができます

$scope.graph = $scope.graph + "?ts=" + new Date().getTime(); 

ザ・、画像、グラフの内容が同じであっても、それが更新されますたびに更新されます。

0

よくわかりました。データはフロントエンドからb64エンコードされていませんでした。なんらかの理由で、私たちがページを変更してもそれはまだ表示されます。 ありがとうございます

関連する問題