【发布时间】:2016-09-09 21:30:21
【问题描述】:
我正在尝试使用 chartJS 及其包装 angular-chart 更新我的图表数据。单击按钮时,它会在图表上添加数据,这没有问题。
我有另一个事件,它在滚动事件后更新图表。该调用效果很好,它调用的函数与以前完全相同。但是我的 $scope.valuesData 没有更新。然后我在函数后面添加了一个$scope.$apply(),它用正确的值重新绘制了整个图表。
问题是:
为什么当我从控制器调用函数 AddData 时我的 $scope.chartValues 没有更新(以及为什么当我从 DOM 调用函数时更新了 $scope.chartValues)。这可能是数据绑定问题?
它是只更新特定范围变量而不是刷新整个范围的函数吗?
我的代码:
HTML:
<ion-scroll zooming="false" direction="x" delegate-handle="scroller" on-scroll="getScrollPosition()" has-bouncing="true" scroll-event-interval="30000">
<div class="chart_wrapper" ng-style="{ 'width': myWidth + '%' }">
<canvas class="chart-bar" chart-data="data2" chart-labels="labels" chart-dataset-override="datasetOverride2" chart-options="options2" ng-click="goToMetrics()" ">
</canvas>
</div>
</ion-scroll>
<button class="button button-small button-calm" ng-click="addValues()">Add Data </button>
JS(控制器):
$scope.getScrollPosition = function(){
var pos = $ionicScrollDelegate.$getByHandle('scroller').getScrollPosition().left ;
if (pos == 0 && $scope.flag == -1){
$scope.flag = 0;
//setTimeout($scope.addValues(), 1000);
$scope.addValues();
}
if (pos < 0){
$scope.flag = -1;
}
};
$scope.addValues = function(){
console.log('add');
// Retrieve values
var week = Graph.getData();
var pp = $scope.chartData;
var mm = $scope.labels;
// Add values to the chart and update the chart width
var tmp = Graph.addBegin(pp, mm, week);
$scope.valuesData = tmp.values;
$scope.myWidth = $scope.myWidth + tmp.length * 4 ;
};
任何帮助表示赞赏
【问题讨论】:
-
它可能不相关,但您可以使用
$timeout服务,它可以更好地捕获错误。 -
@PatrickFerreira 不相关,即使我不使用延时功能也会出现同样的问题
标签: angularjs ionic-framework scope chart.js angular-chart