Я пытаюсь обновить данные своего графика, используя chartJS и его угловую диаграмму-оболочку. При нажатии кнопки данные добавляются на график, с этим проблем нет.
У меня есть другое событие, которое обновляет диаграмму после события прокрутки. Вызов отлично работает и вызывает точно такую же функцию, как и предыдущая. Но мой $scope.valuesData не обновляется. Затем я добавил $scope.$apply()
после функции, и она перерисовала всю диаграмму с правильными значениями.
Вопрос:
Почему мой $scope.chartValues не обновляется, когда я вызываю функцию AddData из контроллера (и почему $scope.chartValues обновляется, когда я вызываю функцию из DOM). Вероятно, это проблема привязки данных?
Это функция, которая обновляет только определенную переменную области вместо обновления всей области?
Мой код:
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
, она позволяет лучше отлавливать ошибки. - person Patrick Ferreira   schedule 09.09.2016