从观察者填充 Angular 图表 - 奇怪的行为

Populate Angular Chart from watcher - Weird behaviour

我的问题是 angular-chart 在从工厂广播更新后没有显示数据。我正在像这样设置标签和数据,根据用户输入,这可能会改变:

// Listener function in controller, receives data from factory
$scope.$on("New Data", function(event, data, ID) {
        processTripData(data, ID).then(function(result) {
            setTypeDistributionBar(result).then(function(r) {
                buildTypeDistributionBar(r.data, r.labels);
            })
        })
    })
var buildTypeDistributionBar = function(data, labels) {
        $scope.distributionLabels = labels;
        $scope.distributionData = [data];
    }

问题在于,这只会在第二次调用 buildTypeDistributionBar 后更新图表。所以这个图表总是落后于用户输入的 1 个查询。

问:为什么第二次调用才显示图表?我怎样才能实现它立即更新?

更新:我创建了一个 fiddle 来演示这一点,它显示的行为与我的不同,但相似。

我发现这可能是一个与 scope 相关的问题,this question 的答案将我引向了以下内容,这是可行的。基本上 $scope.$apply(); 强制摘要。现在图表不再落后一步:

var buildTypeDistributionBar = function(data, labels) {
        $scope.distributionLabels = labels;
        $scope.distributionData = [data];
        $scope.$apply();
}