2016-08-22 53 views
4

我想動態調整一個div時從S3的事件被觸發設置寬度。AngularJS使用NG風格

在下面的代碼我的progress變量發送到updateProgress用作PARAM。這個功能在我的Angular控制器的最高範圍內。

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>

我可以成功CONSOLE.LOG的AWS事件和進度值。但是,當我上傳圖像時,寬度永遠不會改變。在此線程的評論菲爾

+0

你把你的'console.log'放在哪裏?你在'function updateProgress(percent)'裏面檢查過它嗎? –

+0

我檢查了updateProgress函數中的'console.log',它記錄了正確的值。這是一個截圖:http://imgur.com/a/GXdNt –

+0

@cole Roberts,將調試器放在'updateProgress'方法中,並觀察'percent'的值。如果可能,你可以添加小提琴/ Plnkr。 –

回答

2

答案。

假設S3庫不是部分或有份參與,角消化 週期,你需要用在 $範圍發生變化,以$作用域屬性。$申請或$範圍。$ applyAsync。請參閱 docs.angularjs.org/api/ng/type/$rootScope.Scope#$apply。用戶Raghu 回答了這個較早,但被downvoted因爲某些原因

的解決方案是簡單地將updateProgress FN內調用$scope.$apply()