angularjs – 如何在我的自定义回调中访问我的角度$scope?

前端之家收集整理的这篇文章主要介绍了angularjs – 如何在我的自定义回调中访问我的角度$scope?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的回调下面无法更新/访问我的$scope变量(或者,由于某些原因,更改没有显示),我该如何实现?
正在调用回调函数,但我认为这里的 javascript范围显然不对.
  1. function ReportsCtrl($scope) {
  2. var self = this;
  3. $scope.analyticsIsReady = false;
  4. $scope.analyticsInitStatus = '';
  5.  
  6. //$scope.originCompositionChart = new Chart__('originCompositionChart',reportsClient.getOriginCompositionData,true,false);
  7. $scope.originCompositionChart = new Chart__('originCompositionChart',null,false);
  8. $scope.charts = new Array($scope.originCompositionChart);
  9.  
  10. $scope.showIncludedCharts = function () {
  11. };
  12.  
  13. //todo not working
  14. this.updateAnalyticsInitStatus = function (status) {
  15. console.log('boom; ' + status);
  16. $scope.analyticsInitStatus = status;
  17. };
  18.  
  19. //todo not working
  20. this.handleAnalyticsInitSuccess = function (status) {
  21. $scope.analyticsInitStatus = 'Initialisation complete';
  22. $scope.analyticsIsReady = true;
  23. };
  24.  
  25. window.analyticsInitialiserClient = new AnalyticsInitialiserClient__(this.updateAnalyticsInitStatus,this.handleAnalyticsInitSuccess);
  26.  
  27. }
正如@charletfi建议的那样,你需要在$apply中包装来自Angular外部的回调来指示Angular运行一个摘要周期来确定更改.
  1. // Should now work
  2. this.updateAnalyticsInitStatus = function (status) {
  3. $scope.$apply(function () {
  4. console.log('boom; ' + status);
  5. $scope.analyticsInitStatus = status;
  6. });
  7. };

猜你在找的Angularjs相关文章