2015-12-29 3 views
2

Я изменил extjs 4.2.4 на 5.0.0, и у меня есть эта ошибка.Extjs 5 Uncaught TypeError: Невозможно прочитать свойство 'height' undefined

Uncaught TypeError: Cannot read property 'height' of undefined SubSectionColumn.js?_dc=1451369036732:262

loadSprites: function() { 
    var chart = Ext.getCmp(this.identifier); 

    //var xAxisPositionArray = [55,95,135,175]; 
    var xAxisPositionArray = new Array();//[55,95,175]; 
    var yAxisStart = 0; 
    var xAxisHeight = chart.surface.height 
    var sprite; 
    var fromPosition; 
    var toPosition; 
    var width; 
    var noOfBars; 
    var sectionWidth = 0; 
    var newWidthValue = 0; 
    var tmp; 
    var chart = Ext.getCmp(this.identifier); 
    var storeLen =this.storeValue.getCount(); 
    var teststore =this.storeValue; 
    var maxVal = 0; 

    for (var i =0; i<storeLen; i++){ 
     tmp = parseFloat(teststore.data.items[i].get('data1')); 
     if (tmp >maxVal){ 
      maxVal=tmp; 
     } 
    } 

    if(maxVal>0){ 
     width = this.widthValue; 
     noOfBars = this.storeLength;//5; 
     sectionWidth = parseInt(parseInt(width)/parseInt(noOfBars)); 
     for(var j=0;j<noOfBars;j++){    
      newWidthValue = parseInt(newWidthValue) + parseInt(sectionWidth); 
      xAxisPositionArray[j] = newWidthValue;  
     } 
     var gridArray = this.gridLineArrayVal.split(","); 
     for(var i=0;i<xAxisPositionArray.length;i++){ 
      fromPosition = parseInt(xAxisPositionArray[i]); 
      toPosition = fromPosition+1; 
      sprite = Ext.create('Ext.draw.Sprite', { 
       type: 'path', 
       path: "M"+fromPosition+" " + yAxisStart +"L"+toPosition+" "+xAxisHeight+" Z", //if the value is "M100 40 L150 40", it's ok. 
       "stroke-width": (gridArray[i]=='dotted' || gridArray[i]=='line')?"0.4":"0", 
       "stroke-dasharray":(gridArray[i]=='dotted')?"4,4,2.5,4,4,4":"", 
       //"stroke-dasharray":"20,20", 
       stroke: "#9f9f9f", 
       //style:{cursor: 'pointer'}, 
       surface: chart.surface 
      }); 
      sprite.show(true); 
     }; 
     maxVal=parseFloat(maxVal)*(0.10)+parseFloat(maxVal); //Math.round(maxVal)+1; 
     chart.axes.getAt(0).maximum = maxVal; 
     } 
    } 
+0

Пожалуйста, очистите форматирование на своем посту. Благодаря! – Will

ответ

0

chart.surface явно не определено, так как это, где вы пытаетесь получить доступ к height собственности.

В ExtJS 5 были внесены два больших изменения, которые могут иметь значение здесь. Во-первых, они ужесточили свойства конфигурации. Многие из них теперь имеют префикс и не могут быть доступны по старым именам. Вместо этого вы должны использовать (и должны были использовать раньше) методы доступа - например. chart.getSurface()

Во-вторых: Библиотека графиков, используемая в ExtJs 4, была устаревшей и была заменена диаграммами Sencha. Это привело к некоторым значительным изменениям API.

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