Конвертирайте Ext.data.JsonReader от ExtJs 3 в ExtJs 4

Опитвам се да преобразувам този четец от Ext 3 в Ext 4. JavaScript хвърля изключение. Преобразувах ли това правилно?

JavaScript изключение:

Uncaught TypeError: Cannot read property 'prototype' of undefined 

Код (коментирани преобразувани редове):

Ext.onReady(function () {

    Ext.Direct.addProvider(Ext.app.REMOTING_API);

    //var reader = new Ext.data.JsonReader({  // convert from ext 3 to ext 4
    var reader = Ext.create('Ext.data.JsonReader', {
        totalProperty: 'results',
        successProperty: 'success',
        idProperty: 'id',
        root: 'data'
    }, [{
        name: 'id'
    }, {
        name: 'email',
        allowBlank: false
    }, {
        name: 'first',
        allowBlank: false
    }, {
        name: 'last',
        allowBlank: false
    }]
    );

    //var writer = new Ext.data.JsonWriter({  // convert from ext 3 to ext 4
    var writer = Ext.create('Ext.data.JsonWriter', {
        returnJson: false,
        writeAllFields: true
    });

    //var store = new Ext.data.DirectStore({  // convert from ext 3 to ext 4
    var store = Ext.create('Ext.data.DirectStore', {
        api: {
            read: CRUDSampleMethods2.read,
            create: CRUDSampleMethods2.create,
            update: CRUDSampleMethods2.update,
            destroy: CRUDSampleMethods2.destroy
        },
        reader: reader,
        baseParams: {
            dummy: 'blubb'
        },
        writer: writer,
        paramsAsHash: true,
        batchSave: false,
        batch: false,
        prettyUrls: false,
        remoteSort: true,
        listeners: {
            load: function (result) { },
            loadexception: function () {

            },
            scope: this
        }
    });

    // ... code continues

РЕДАКТИРАНЕ:

Поправи това:

var reader = Ext.create('Ext.data.JsonReader', {
    totalProperty: 'results',
    successProperty: 'success',
    idProperty: 'id',
    root: 'data'
});

И добавен модел:

    var store = Ext.create('Ext.data.DirectStore', {
        model: 'User',
        api: {

person MacGyver    schedule 29.07.2013    source източник


Отговори (1)


Конструктор на JsonReader приема само един параметър. Така че вашият код всъщност не дефинира списъка с полета. И все пак списъкът с полета е задължителен, или в магазина (ако магазинът не използва модел), или модела. И това е типът грешка, който получавате, когато в магазин липсва декларация за полета...

person rixo    schedule 29.07.2013
comment
Благодаря, така се отървах от това изключение (в моето РЕДАКТИРАНЕ)... сега бутонът за зареждане изчезва и мрежата се показва празна. Ще отбележа това като отговор, но ще задам още един въпрос, като дам подробности за моя рутер и прокси данни. Мрежата не зарежда данни. Надяваме се, че това ще е последният брой. - person MacGyver; 29.07.2013
comment
Този въпрос е свързан: stackoverflow.com/questions/17917316/ - person MacGyver; 29.07.2013