无法读取未定义的属性“__”

时间:2016-11-01 22:48:46

标签: meteor ecmascript-6 angular-meteor

我目前正在为我的学校项目工作,并使用Meteor与AngularJs 1和ES6。在我的一个视图中,我尝试每秒更新一些当前随机生成的实时数据(使用AngularCharts)。我是Meteor和ES6如何工作的新手,所以我认为一个非常简单的错误。

这是我在视图中的类代码:

class View2 {

constructor($interval, $scope) {
    'ngInject';

    this.cardRow = [
        {name: 'Drilling Heat', color: 'white', value: 0},
        {name: 'Drilling Speed', color: 'white', value: 0},
        {name: 'Milling Heat', color: 'white', value: 0},
        {name: 'Milling Speed', color: 'white', value: 0}
    ];
    this.type = ['bar', 'line', 'pie', 'doughnut', 'radar'];
    this.chartRow = [
        {
            name: 'Chart1',
            type: 'bar',
            labels: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
            series: ['Series A'],
            data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            datasetOverride: [{yAxisID: 'y-axis-1'}],
            options: {
                animation: false,
                scales: {
                    yAxes: [
                        {
                            id: 'y-axis-1',
                            type: 'linear',
                            display: true,
                            position: 'left'

                        }]
                }
            }
        },
        {
            name: 'Chart2',
            type: 'line',
            labels: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
            series: ['Series A'],
            data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            datasetOverride: [{yAxisID: 'y-axis-1'}],
            options: {
                animation: false,
                scales: {
                    yAxes: [
                        {
                            id: 'y-axis-1',
                            type: 'linear',
                            display: true,
                            position: 'left'

                        }]
                }
            }
        }
    ];


    $interval(this.update, 1000);
}

update() {
    for (var i = 0; i < this.cardRow.length; i++) {
        this.cardRow[i].value = Math.round((Math.random() * 10) * 10);
        var value = this.cardRow[i].value;
        switch (true) {
            case (value > 80):
                this.cardRow[i].color = 'red';
                break;
            case (value > 60):
                this.cardRow[i].color = 'orange';
                break;
            case (value > 40):
                this.cardRow[i].color = 'yellow';
                break;
            default:
                this.cardRow[i].color = 'green';
                break;
        }
    }
    for (var y = 0; y < this.chartRow.length; y++) {
        for (var z = 0; z < this.chartRow[y].data.length; z++) {
            this.chartRow[y].data[z] = this.chartRow[y].data[z + 1];
        }
        this.chartRow[y].data[z - 1] = Math.round((Math.random() * 10) * 10);
    }
}

}

$ interval应该每秒调用函数“update”,但变量是未知的。它会抛出这样的错误:

TypeError: Cannot read property 'length' of undefined
at update (view2.js:74)
at callback (modules.js?hash=7db65c4…:46346)
at Scope.$eval (modules.js?hash=7db65c4…:51381)
at Scope.$digest (modules.js?hash=7db65c4…:51194)
at Scope.$apply (modules.js?hash=7db65c4…:51489)
at tick (modules.js?hash=7db65c4…:46336)

我该怎么做才能解决这个问题?有没有办法将Meteor与旧的Javascript版本一起使用?

0 个答案:

没有答案