View Full Version : ExtJS 4.1 Ext.data.Record.create "no method substring"

27 Nov 2012, 2:52 AM

I want to create a chart. With my previous version of ExtJS it worked, but with ExtJS 4.1 not.
I get my data array from a servlet and then I create a Record:

var recordLinks = new Array(9);
recordLinks[0] = {name: 'datetime'};
recordLinks[1] = {name: 'sensorName'};
recordLinks[2] = {name: 'period0'};
recordLinks[3] = {name: 'destoreDate'};
recordLinks[4] = {name: 'destoreReason'};
recordLinks[5] = {name: 'destoreYVal'};
recordLinks[6] = {name: 'alarmDate'};
recordLinks[7] = {name: 'alarmName'};
recordLinks[8] = {name: 'alarmYVal'};

var fields = new Array(9);
fields[0] = 'datetime';
fields[1] = 'sensorName';
fields[2] = 'period0';
fields[3] = 'destoreDate';
fields[4] = 'destoreReason';
fields[5] = 'destoreYVal';
fields[6] = 'alarmDate';
fields[7] = 'alarmName';
fields[8] = 'alarmYVal';

var rec = new Ext.data.Record.create(recordLinks);

var reader = new Ext.data.ArrayReader({}, rec);
var store = new Ext.data.Store({
fields: fields,
reader: reader,
data : data

Here is en example of an element of my data array:

{"datetime": '24/11/2012 10:45:42', "sensorName":'TEST 1',"period0": 22.80,"destoreDate":'24/11/2012 10:47:38',"destoreReason":'Checking',"destoreYVal":30.0,"alarmDate":undefined,"alarmName":undefined,"alarmYVal":undefined}

My problem happens when initializing my variable "rec". I get this exception:
TypeError: Object [object Object] has no method 'substring'
Thanks to debug breakpoints, I determined that it happens in the ext-all-debug script , function parseNamespace line 4493 :
if (name === from || name.substring(0, from.length) === from) {

I tried to set my variable with simple String and it failed too (ex: recordLinks[0] = 'datetime';)

Does anyone know why it does not work?


29 Nov 2012, 12:51 PM
Are you trying to create a record with this:

var rec = new Ext.data.Record.create(recordLinks);

3 Dec 2012, 12:15 AM
Yes I do.
And it works for my previous script...

3 Dec 2012, 4:20 AM
There are many things wrong with the code. Could be simplified down to:

var store = new Ext.data.Store({
fields: ['name'],
data : [
{name: 'datetime'},
{name: 'sensorName'},
{name: 'period0'},
{name: 'destoreDate'},
{name: 'destoreReason'},
{name: 'destoreYVal'},
{name: 'alarmDate'},
{name: 'alarmName'},
{name: 'alarmYVal'}

4 Dec 2012, 5:31 AM
Ok, it works ! =D>
Thanks a lot!

I hope I'll be more efficient for the next migration to new ExtJS versions ;)