Google Charts "Uncaught (in обещание) Ошибка: недопустимый индекс столбца 3. Должен быть целым числом в диапазоне [0-3]." - PullRequest
0 голосов
/ 26 февраля 2019

Прежде чем пометить это как дубликат, обратите внимание, что другие спрашивают об ошибке Invalid column index undefined. ... или Invalid column index 5. Should be an integer in the range [0-4]. Но нет.Мой - «3 должно быть целым числом в диапазоне [0-3]».Кроме того, таблица работает без строки formatter.format() (только без форматирования).

google.charts.load('current', {'packages':[data.chartType.toLowerCase()]});
google.charts.setOnLoadCallback(function(){
    var googleData = new google.visualization.DataTable();
    for (var h in data.headers) {
        googleData.addColumn(data.headers[h].type, data.headers[h].html);
        if (data.headers[h].format) {
            var formatter = new google.visualization.NumberFormat(data.headers[h].format);
            console.log(data.headers[h].format);
            formatter.format(googleData, h); // Errors Here
        }
    }
    /* ... Add Rows ... Draw Chart ... */
}

Заголовок, о котором идет речь, выглядит так:

header[3] = {
    "html": "Total Amount",
    "source": "total_amount",
    "type": "number",
    "format": {
        "negativeColor": "#F05840", //orange
        "negativeParens": true,
        "pattern": "#,###",
        "prefix": "$",
        "suffix": "",
    }
}

Не могу понятьпочему это будет с ошибкой.

Пожалуйста, прости меня за любые опечатки здесь, я должен был вручную отредактировать интервал и удалить конкретную информацию моей компании после вставки кода здесь.


Редактировать

WhiteHat правильно, потому что моя переменная h была строкой, а не целым числом, и вызов parseInt действительно убрал эту ошибку.Однако вместо того, чтобы вызывать parseInt на устройстве форматирования и везде, где это необходимо, я избавился от своих вызовов for (var h in data.headers) и перешел на болотный стандарт for (var h = 0; h < data.headers.length; h++).Хотя это более многословно и дает больше возможностей для опечаток, оно гораздо более стандартизировано и предсказуемо.

У меня все еще есть проблемы с GoogleCharts NumberFormatter, но это еще один раунд исследований и вопросов, а не этот.

1 Ответ

0 голосов
/ 27 февраля 2019

убедитесь, что вы передаете число (3),
, а не строку ('3'),
, используя -> parseInt ...

например,

formatter.format(googleData, parseInt(h));  // <-- here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...