2016-02-18 2 views
1

Мне удалось получить эту инструкцию if для запуска первой части, но она не будет запускать else, если бит правильно. Я должен помещать что-то неправильно, потому что он показывает (не назначается) на xAxis. Интересно, почему else, если часть не работает.if statement for Highcharts xAxis labels

labels: { 
    formatter: function() { 
     // custom formatter 
     if (this.x == null) { return "(Not Designated)"; 

     } else if (this.x != null) { 

      return this.x; 
     }      
}, 

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

if (this.x == null) return '(Not Designated)'; 

else return this.x; 

Если я использую «===» Настройка он не отображает (не обозначенные) или любые значения xAxis, если я использую «==», он покажет (не обозначенный) для всех элементов xAxis. Я понимаю, что это действительно простая функция, но она не работает, и она либо имеет какое-то отношение к форматированию Highcharts, либо к тем данным, которые я собираюсь собрать. Я не имел дело с нулевыми значениями, либо извиняюсь за плохие примеры разметки ... спасибо за комментарии!

+2

попробуйте использовать «===» для соответствия равенства. вы можете также закодировать это в одной строке, например: «return this.x ||» (Not Desginated) »; – Sumit

+0

Я пробовал это, посмотрев на некоторые другие темы, просто попробовал еще раз, и он не показывает никаких значений xAxis с параметром «===», равным настройке. Спасибо за один пример строки, поможет мне наверняка. Очень странно, потому что всплывающая подсказка имеет одну и ту же основную часть форматирования, и она отлично работает. –

+1

I второй комментарий @Sumit. Но для решения первоначальной настройки - почему бы вам по-прежнему беспокоиться, если иначе? Вы проверяете, является ли «this.x» * «чем-то» с вашим оператором if, вам не нужно проверять, является ли this.x «не» * тем же, вы можете просто использовать «else».Это в основном то, что однострочное решение сокращается. – jlbriggs

ответ

2

Когда я проверяю this.x с помощью отладчика это выглядит как неопределенная: enter image description here

я заменить «this.x» на «this.value», диаграмма работает. Адрес jsfiddle.

if (this.value == 0) { 
    return '(Not Designated)'; 

    } else if (this.value != 0) { 

    return this.value; 
    } 

Будет здорово, если вы сможете делиться категориями, которые вы используете!

+0

Это работало для xAxis, теперь у меня это под контролем как для ярлыков данных (мой ответ ниже), так и для ярлыков xAxis. Когда я закончу, я могу опубликовать ссылку на живые графики. –

0

В конце концов, в конце концов, я получил некоторое время, но рад, что это обрабатывает все нулевые значения и все пустые значения, если у вас есть аналогичная проблема с вашей базой данных.

// format the xAxis labels to handle null and blank values from database 
formatter: function() { 
    if (this.x === null) { 
    return "(Not Designated)" + '<br>' + '$' + Highcharts.numberFormat(this.y, 0); 
    } else if (this.x === '') { 
     return "(Not Designated)" + '<br>' + '$' + Highcharts.numberFormat(this.y, 0); 
} 
    return this.x + ' ' + '$' + Highcharts.numberFormat(this.y, 0); 
} 
+0

[Здесь] (http://www.followthemoney.org/entity-details?eid=16039) - это законченная диаграмма столбцов. Теперь, если бы я мог только получить вещь dang, чтобы на самом деле быть отзывчивым, что было бы неплохо, но, возможно, не возможно с невосприимчивым сайтом ... –

1

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

labels: { 
      formatter: function() { 

     if (this.value == 0) {return '(Not Designated)';} 
     else {return this.value;} 
     }, 
     }, 
     }, 

Были также 2 другие проблемы:

  1. this.x не определен, поэтому проверка с === не будет показывать ось х, так как этот оператор будет проверять, если значения строго равна (подробнее here). поскольку undefined не определено, вы не можете проверить его значение.
  2. Когда у вас есть нулевое имя в категории, highcharts заменит его своим индексом, поэтому именно с == он не работал.

Я предлагаю заменить null на более 0 и this.x по this.value. Работает Fiddle.

+0

В итоге я перешел на dataLabels, потому что я не мог заставить другие вещи работать. Я думаю, больше понимания того, как данные попадаются, полезно, спасибо за помощь новичку с плохими примерами! Я был так смущен нулевыми значениями, возвращающимися как цифры, теперь я понимаю, почему это происходит. Кажется, сейчас так просто. –