Extjs criar armazenamento

Tenho um problema em criar uma loja e preciso de Ajuda. Eu tenho uma loja, criada usando ex.define abordagem e funciona perfeitamente. Aqui está o código:

  Ext.define('path.to.myStore', {
        extend: 'Ext.data.Store',
        model: 'arm4.dict.m.DictBaseModel',
        proxy: {
            type: 'ajax',
            url: 'data/module-dict/PossessionGroundWs/find',

            reader: {
                type: 'json',
                root: 'dataList'
            }
        }
    });

//later
//works fine!
var s =Ext.create('path.to.myStore');
s.load();
O problema é que quero criar uma loja dinamicamente, sem ex.definir. É assim que eu faço:
var s = Ext.create('Ext.data.Store', {
    model: 'arm4.dict.m.DictBaseModel',
    proxy: {
        type: 'ajax',
        url: 'data/module-dict/PossessionGroundWs/find',

        reader: {
            type: 'json',
            root: 'dataList'
        }
    }
});

s.load();

Como você pode ver, ele usa exatamente a mesma configuração, mas isso não funciona. Eu entendo este erro:

TypeError: reader.read is not a function    
result = reader.read(me.extractResponseData(response));
Quando investigo o código Extjs, vejo que o leitor não é inicializado por motivo.

"leitor" parece-se com isto:

{
    applyDefaults:true
    root:"dataList"
    type:"json"
}
Então, o que estou a fazer de errado? Você pode reproduzir este erro (bug)?

Author: mik, 2012-10-11

5 answers

Não consigo reproduzir este erro, mas lembro-me que um dia o tinha. Tente definir o seu leitor num ficheiro separado como este
Ext.define('My.reader.Default', {
    extend: 'Ext.data.reader.Json',
    alias: 'reader.myreader',

    root: 'dataList'
});

E depois

Ext.create('Ext.data.Store', {
    requires: ['My.reader.Default'],
    model: 'arm4.dict.m.DictBaseModel',
    proxy: {
        type: 'ajax',
        url: 'data/module-dict/PossessionGroundWs/find',
        reader: 'myreader'
    }
});
Talvez isto ajude.
 3
Author: Alexey Solonets, 2012-10-11 09:51:21
Encontrei o problema. Eu realmente não sei se é um bug ou não, mas se você criar sua loja com Ext.criar (Sem extracto.defina ) você tem que precisar de sua classe modelo antes da criação. Então, isto funciona bem.
Ext.require('arm4.dict.m.DictBaseModel');
//......
var s = Ext.create('Ext.data.Store', {
    model: 'arm4.dict.m.DictBaseModel',
//store definition 
 2
Author: mik, 2012-10-11 10:34:31

Desculpe por interromper uma pergunta antiga, mas esta página vem bastante alto no Google ao procurar o erro TypeError: reader.ler não é uma função , por isso espero que possa ser útil. Eu tive o mesmo erro, que foi causado por uma loja ligada a um modelo não existente, então por favor verifique a referência do seu modelo para qualquer tipo de erro.

 1
Author: DavidKunz, 2015-11-30 09:42:36
É uma questão antiga, mas esta questão é muito comum. No meu cenário, não defini o modelo, esqueci-me de estender o modelo com extracto.dado.Modelo', depois de extender ele começa a funcionar corretamente.
 1
Author: Naveen Ramawat, 2016-05-27 07:10:53
Reproduzi o mesmo erro quando a minha definição de modelo estava errada. Então reveja isso. No meu caso:
Ext.define('APP.model.web.bdetmclocalidad.BdetMcProvincia', {
    extend: 'Ext.data.Model',
    idProperty : 'idProvincia',
    fields: [
        {name:'codProvincia', type:"string", useNull:true}
        ,{name:'descProvincia', type:"string", useNull:true}
    ],
    proxy : {
        type : 'uxproxy',
        localUrl : 'data/bdetMcProvinciasListado.json',
        remoteUrl : 'bdetmcprovincia'
    }
});


Ext.define('APP.store.web.bdetmcprovincia.BdetMcProvinciaStore', {
    extend : 'Ext.data.Store',
    requires : 'APP.model.web.bdetmcprovincia.BdetMcProvincia',
    model : 'APP.model.web.bdetmcprovincia.BdetMcProvincia',
    filterOnLoad : false,
    remoteSort   : true,
    pageSize     : 25,
    proxy : {
        type : 'uxproxy',
        localUrl : 'data/bdetMcProvinciasListado.json',
        remoteUrl : 'bdetmcprovincia'
    }
});

Cometo um erro com o nome do pacote (causado pelo copy & paste): APLICACAO.modelo.site.bdetmclocalidad.BdetMcProvincia não é igual a APP.modelo.site.bdetmcprovincia.BdetMcProvincia

Espero que isto ajude.
 0
Author: orog, 2016-04-12 14:07:07