2013-07-29 6 views
0

Я пытаюсь преобразовать этот читатель из Ext 3 в Ext 4. JavaScript бросает исключение. Я правильно это преобразовал?Преобразование Ext.data.JsonReader из ExtJs 3 в ExtJs 4

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 

EDIT:

исправил:

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: { 

ответ

1

JsonReader's constructor принимает только один параметр. Таким образом, ваш код действительно не определяет список полей. Однако список полей является обязательным, либо в магазине (если магазин не использует модель), либо модель. И это тот тип ошибки, который вы получаете, когда в хранилище отсутствует объявление полей ...

+0

Спасибо, что избавились от этого исключения (в моем EDIT) ... теперь выталкиватель «Загрузка» уходит, а сетка показывает пустое , Я буду отмечать это как ответ, но я собираюсь задать еще один вопрос, дающий подробности о моих данных маршрутизатора и прокси. Сетка не загружает данные. Надеюсь, это будет последний вопрос. – MacGyver

+0

Этот вопрос связан: http://stackoverflow.com/questions/17917316/ext-grid-panel-in-ext-4-not-loading-data-from-ext-direct-proxy-store – MacGyver