我遇到的问题是,从工厂广播更新时,我的角度图表没有显示数据。我正在根据用户输入设置标签和数据,这可能会改变:
// 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来证明这一点,它没有像我一样显示相同的行为,但是类似。
答案 0 :(得分:1)
我发现这可能只是一个与scope
相关的问题,this question的答案会引导我进行以下操作。基本上$scope.$apply();
强制消化。现在图表不再落后了一步:
var buildTypeDistributionBar = function(data, labels) {
$scope.distributionLabels = labels;
$scope.distributionData = [data];
$scope.$apply();
}