2016-08-22 5 views
4

S3からのイベントが発生したときにdivのサイズを動的に変更したいと思います。私はPARAMとしてupdateProgress関数にprogress変数を送信し、次のコードでng-styleを使用したAngularJSの幅の設定

。この機能は、角度コントローラの最高の範囲にあります。

s3.upload(params).on('httpUploadProgress', function(evt) { 
     var progress; 
     progress = Math.floor(evt.loaded * 100/evt.total); 
     updateProgress(progress); 
    }) 
    .send(function(err, res, data) { 
     if (err) { 
      growl.error("We're having trouble uploading your image. Please try again!", {title: 'Whoops!', ttl: 5000}); 
      console.log('Error uploading' + err); 
     } else { 
      imgLocation = res.Location; 
      postToFirebase(imgLocation); 
     } 
    }); 

は、ここに私のUpdateProgress機能

function updateProgress(percent) { 
    $scope.progressBar = { 
     'width': percent + '%' 
    } 
} 

HTML

<div ng-style="progressBar" class="shot__image--post__progress"></div>

私は成功したAWSのイベントや進捗値をCONSOLE.LOGすることができます。しかし、画像をアップロードすると、幅は決して変わりません。

+0

あなたは 'console.log'をどこに入れましたか?あなたは 'function updateProgress(percent)'の中でそれをチェックしましたか? –

+0

updateProgress関数から 'console.log'を確認しましたが、正しい値が記録されています。ここにスクリーンショットがあります:http://imgur.com/a/GXdNt –

+0

@cole Roberts、デバッガを 'updateProgress'メソッドに置き、' percent'の値を観察します。可能であれば、Fiddle/Plnkrを追加することができます。 –

答えて

2

Answer from PhilこのスレッドのコメントでS3ライブラリを想定し

は、あなたが $スコープで$スコーププロパティの変更をラップする必要が サイクルをダイジェスト角度にの一部または関与していない。$は、スコープを適用するか、または$。$ applyAsync。 docs.angularjs.org/api/ng/type/$rootScope.Scope#$applyを参照してください。ユーザーラグー は、この先には答えが、解決策は、単にupdateProgress FN内$scope.$apply()を呼び出すことでした何らかの理由

ためにdownvotedました。