我的回调下面无法更新/访问我的$scope变量(或者,由于某些原因,更改没有显示),我该如何实现?
正在调用回调函数,但我认为这里的 javascript范围显然不对.
正在调用回调函数,但我认为这里的 javascript范围显然不对.
function ReportsCtrl($scope) { var self = this; $scope.analyticsIsReady = false; $scope.analyticsInitStatus = ''; //$scope.originCompositionChart = new Chart__('originCompositionChart',reportsClient.getOriginCompositionData,true,false); $scope.originCompositionChart = new Chart__('originCompositionChart',null,false); $scope.charts = new Array($scope.originCompositionChart); $scope.showIncludedCharts = function () { }; //todo not working this.updateAnalyticsInitStatus = function (status) { console.log('boom; ' + status); $scope.analyticsInitStatus = status; }; //todo not working this.handleAnalyticsInitSuccess = function (status) { $scope.analyticsInitStatus = 'Initialisation complete'; $scope.analyticsIsReady = true; }; window.analyticsInitialiserClient = new AnalyticsInitialiserClient__(this.updateAnalyticsInitStatus,this.handleAnalyticsInitSuccess); }
正如@charletfi建议的那样,你需要在$apply中包装来自Angular外部的回调来指示Angular运行一个摘要周期来确定更改.
// Should now work this.updateAnalyticsInitStatus = function (status) { $scope.$apply(function () { console.log('boom; ' + status); $scope.analyticsInitStatus = status; }); };