chartJS 및 래퍼 각도 차트를 사용하여 내 차트의 데이터를 업데이트하려고합니다. 버튼을 클릭하면 차트에 데이터가 추가되지만 문제는 없습니다.범위 기능을 사용하여 새로 고치는 범위 변수가 작동하지 않습니다.
다른 이벤트가 있는데,이 이벤트는 스크롤 이벤트 이후에 차트를 업데이트합니다. 이 호출은 훌륭하게 작동하며 이전과 똑같은 함수를 호출합니다. 그러나 내 $ scope.valuesData는 업데이트되지 않습니다. 그런 다음 함수 뒤에 $scope.$apply()
을 추가하고 올바른 값으로 전체 차트를 다시 그립니다.
질문은 다음과 같습니다
내가 컨트롤러에서 함수는, addData 전화 (그리고 나는에서 함수를 호출 할 때 왜 scope.chartValues가 업데이트 $ 때 왜 $의 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' 서비스를 사용할 수 있기 때문에 오류를 더 잘 포착 할 수 있습니다. –
@PatrickFerreira와 관련이 없으며 시간 지연 함수를 사용하지 않아도 같은 문제가 발생합니다. – Jibeee