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