Невозможно очистить $ scope.labels и $ scope.data, используемые при рисовании угловых диаграмм - PullRequest
0 голосов
/ 08 июля 2019

Я использую angular-chart.js для рисования некоторых графиков.И я использую значения массива, чтобы установить значения для $scope.labels и $scope.data из базы данных.Я хочу сделать $scope.labels и $scope.data пустыми после каждого вызова функции.пожалуйста, найдите следующий код

angular.module("app", ["chart.js"])
.controller("LineCtrl", function ($scope) {
     $scope.labels = [];      
      $scope.data = [[]];
   $scope.graphFunc = function(array) {


      for(var i =0; i < array.length; i++)
      {
        $scope.labels.push(array[i].name);
        $scope.data[0].push(array[i].age)  
      }

      $scope.onClick = function (points, evt) {
        console.log(points, evt);
      };
      $scope.datasetOverride = [{ yAxisID: 'y-axis-1' }, { yAxisID: 'y-axis-2' }];
      $scope.options = {
        scales: {
          yAxes: [
            {
              id: 'y-axis-1',
              type: 'linear',
              display: true,
              position: 'left'
            },
            {
              id: 'y-axis-2',
              type: 'linear',
              display: true,
              position: 'right'
            }
          ]
        }
      };

   };

   $scope.labels = [];
   $scope.data = [[]];
});

Но тогда график не появляется.Обратите внимание, что мой массив является динамическим, и формат массива выглядит следующим образом

var arrayVal = [{name:A,age:10},{name:B,age:30}];

ОБНОВЛЕНО HTML

<canvas id="line" class="chart chart-line" chart-data="data"
chart-labels="labels" chart-series="series" chart-options="options"
chart-dataset-override="datasetOverride" chart-click="onClick">
</canvas>

1 Ответ

0 голосов
/ 09 июля 2019

Я мог бы найти проблему, которая не объявляла $ scope.labels и $ scope.data внутри контроллера, объявив эти две глобальные переменные внутри chartFunc (), эту проблему можно преодолеть.Поэтому вам не нужно повторно инициализировать две переменные в конце chartFunc ().

angular.module("app", ["chart.js"])
.controller("LineCtrl", function ($scope) {

   $scope.graphFunc = function(array) {

        $scope.labels = [];      
      $scope.data = [[]];
      for(var i =0; i < array.length; i++)
      {
        $scope.labels.push(array[i].name);
        $scope.data[0].push(array[i].age)  
      }

      $scope.onClick = function (points, evt) {
        console.log(points, evt);
      };
      $scope.datasetOverride = [{ yAxisID: 'y-axis-1' }, { yAxisID: 'y-axis-2' }];
      $scope.options = {
        scales: {
          yAxes: [
            {
              id: 'y-axis-1',
              type: 'linear',
              display: true,
              position: 'left'
            },
            {
              id: 'y-axis-2',
              type: 'linear',
              display: true,
              position: 'right'
            }
          ]
        }
      };

   };
});

Что происходит каждый раз, когда пользователь хочет увидеть график, две переменные повторно инициализируются внутри chartFunc ипредыдущие значения массива удаляются автоматически

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...