2013-05-09 2 views
1

У меня есть проблема с кэндо диаграммы, когда Список возвращенной из контроллера не имеют элемента У меня есть ошибка:Uncaught TypeError: Не удается прочитать свойство «длина» неопределенной (кэндо Chart)

Uncaught TypeError: Cannot read property 'length' of undefined kendo.all.min.js:28 
    Vt.extend._bindCategoryAxis kendo.all.min.js:28 
    Vt.extend._bindCategories kendo.all.min.js:28 
    Vt.extend._onDataChanged kendo.all.min.js:28 
    b.isFunction.i jquery-1.9.1.min.js:3 
    i.extend.trigger kendo.all.min.js:9 
    tt.extend._process kendo.all.min.js:11 
    tt.extend.success kendo.all.min.js:11 
    b.isFunction.i jquery-1.9.1.min.js:3 
    n.success kendo.all.min.js:11 
    c jquery-1.9.1.min.js:3 
    p.fireWith jquery-1.9.1.min.js:3 
    k jquery-1.9.1.min.js:5 
    r jquery-1.9.1.min.js:5 

Если Я удаляю CategoryAxis из кода, все работы, как и ожидалось, не имеет значения, если нет данных, но проблема в том, что у меня не будет времени, представленного на оси х:

function createChart() { 
    $("#chart").kendoChart({ 
     dataSource: { 
      transport: { 
       read: { 
        url: "@Url.Action("GetLostDaysTrend", "Production")"+"? 
         initDate="+startDate+"&endDate="+endDate+"&reactor="+reactor        
        ,contentType: "application/json", 
        type: "POST" 
       }, 
       parameterMap: function (options) { 
        return JSON.stringify(options); 
       } 
      }, 
      group: { 
       field: "Reactor" 
      }, 
      sort: { 
       field: "Fecha", 
       dir: "asc" 
      } 
     }, 
     title: { 
      text: "Tendencias de dias perdidos" 
     }, 
     legend: { 
      position: "top" 
     }, 
     seriesDefaults: { 
      type: "line" 
     }, 
     series: 
     [{ 
      field: "Acumulado", 
      name: "Acumulado", 
      groupNameTemplate: "#= group.value # (#= series.name #)" 
     }], 
     categoryAxis: { 
      field: "Fecha", 
      labels: { 
       template: "#= formatDate(value) #", 
       rotation: -90 
      } 
     }, 
     tooltip: { 
      visible: true, 
      format: "N0" 
     } 
    }); 
} 

Я убегаю головы с этой проблемой, любой ключ?

ответ

1

Опытный тот же вопрос, и фиксируя его, проверяя, если длина массива не равен нулю:

parameterMap: function (options) { 
... 

    if (options.sort.length == 0) { 
    return []; 
    } 
    else { 
    return options.sort[0].field + ',' + options.sort[0].dir; 
    } 
} 
Смежные вопросы