Диаграмма. js: вызов метода вне метода onRefre sh () - PullRequest
0 голосов
/ 02 февраля 2020

Я приложил фрагмент кода. У меня есть метод в rand() в классе HomeComponent, и я хочу вызвать его для оси y, но из текущего сценария это невозможно, потому что всякий раз, когда onRefresh() вызывается this.rand(), не достижимо, что ожидается. Потому что onRefresh() вызывается из ядра. js, который является базовой библиотекой. Поэтому, пожалуйста, помогите сделать это

export class HomeComponent implements OnInit, OnDestroy {
....
..
options: any = {
    scales: {
      xAxes: [
        {
          type: 'realtime',

          realtime: {
            onRefresh(chart: any) {


              chart.data.datasets.forEach(function(dataset: any) {
                dataset.data.push({
                  x: Date.now(),

                  **y: this.rand()**
                });
              });
              chart.config.options.scales.yAxes[0].ticks.min = chart.helpers.niceNum(20);
              chart.config.options.scales.yAxes[0].ticks.max = chart.helpers.niceNum(180);
            },

            delay: 2000
          }
        }
      ]
    },
    annotation: {
      annotations: [
        {
          type: 'line',
          mode: 'horizontal',
          scaleID: 'y-axis-0',
          value: '120',
          borderColor: 'tomato',
          borderWidth: 2
        },
        {
          type: 'line',
          mode: 'horizontal',
          scaleID: 'y-axis-0',
          value: '70',
          borderColor: 'blue',
          borderWidth: 2
        }
      ]
      //drawTime: "afterDraw" // (default)
    }
  };
  ....
  ....
  
  rand(): Number {
    return Math.floor(Math.random() * (200 - 100 + 1)) + 100;
  }
  }

Заранее спасибо :)

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

проблему можно решить, объявив глобальную переменную в классе HomeComponent и в теле конструктора HomeComponent, присвоив этому объявленной переменной 'this'. После этого мы можем легко получить доступ к методам и переменным экземпляра.

Спасибо :)

0 голосов
/ 02 февраля 2020

Учитывая вашу реализацию rand, не будет ли достаточно просто делать то, что вы делаете для данных оси X?

т.е.

                dataset.data.push({
                  x: Date.now(),
                  y: Math.floor(Math.random() * (200 - 100 + 1)) + 100;
                });
...