关联和类名

时间:2013-09-05 16:08:07

标签: extjs extjs4 associations extjs4.2 classname

我尝试构建一个非常简单的应用程序,该应用程序基于两个关联模型创建商店。 (它基于一个示例,您可以找到here。)如果我使用岸级名称,则此方法有效。但是,一旦我使用带有路径和应用程序名称的类名,它就不再有用了,就像我以前那样。

我做了以下更改:

  • 将“Pessoa”改为“Aap.model.Pessoa”
  • 将“Endereco”更改为“Aap.model.Endereco”

有人可以向我解释一下:

  1. 根本问题是什么?
  2. 为了使分析能够在第二个例子中起作用,我需要做些什么改变

  3. 有效的示例

    app.js:

    Ext.Loader.setConfig({
        enabled: true, // Allows dynamc loading of JavaSCript files
        disableCaching: false // Disable random parameter in the URLs path}); 
    
    Ext.application({
        name: 'Aap',
        models: ['Pessoa', 'Endereco']});
    

    应用程序/模型/ Pessoa.js:

    Ext.define('Pessoa', {
    extend: 'Ext.data.Model',
    fields: [
            {name: 'id', type: 'int'},
            {name: 'nome', type: 'string'}
    ],
    proxy: {
        type: 'rest',
        url: 'data/data',
        format: 'json'
    },  
              hasOne: {model: 'Endereco', foreignKey: 'pessoaId'} }
    

    应用程序/模型/ Endereco.js:

    Ext.define('Endereco', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'id', type: 'int'},
        {name: 'logradouro', type: 'string'}
    ]});
    

    数据/ data.json:

    [
    {
        "id": 1,
        "nome": "Loiane",
        "sobrenome": "Groner",
        "endereco": {
            "id": 14,
            "logradouro": "rua ficticia",
            "numero": "100"
        }
    },
    {
        "id": 2,
        "nome": "Tom",
        "sobrenome": "Stock",
        "endereco": {
            "id": 34,
            "logradouro": "reality street",
            "numero": "55"
        }
    }]
    

    浏览器控制台中的命令:

       pessoaStore = new Ext.data.Store({
        autoLoad: true,
    model: 'Pessoa'
    });
    

    结果我得到了一个带有两个正确关联模型的商店。但是,如果我更改了类名,则关联不再起作用。


    不起作用的示例

    app.js:

    Ext.Loader.setConfig({
        enabled: true, // Allows dynamc loading of JavaSCript files
        disableCaching: false // Disable random parameter in the URLs path}); 
    
    Ext.application({
        name: 'Aap',
        models: ['Aap.model.Pessoa', 'Aap.model.Endereco']});
    

    应用程序/模型/ Pessoa.js:

    Ext.define('Aap.model.Pessoa', {
    extend: 'Ext.data.Model',
    fields: [
            {name: 'id', type: 'int'},
            {name: 'nome', type: 'string'}
    ],
    proxy: {
        type: 'rest',
        url: 'data/data',
        format: 'json'
    },  
              hasOne: {model: 'Aap.model.Endereco', foreignKey: 'pessoaId'} }
    

    应用程序/模型/ Endereco.js:

    Ext.define('Aap.model.Endereco', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'id', type: 'int'},
        {name: 'logradouro', type: 'string'}
    ]});
    

    数据/ data.json:

    [
    {
        "id": 1,
        "nome": "Loiane",
        "sobrenome": "Groner",
        "endereco": {
            "id": 14,
            "logradouro": "rua ficticia",
            "numero": "100"
        }
    },
    {
        "id": 2,
        "nome": "Tom",
        "sobrenome": "Stock",
        "endereco": {
            "id": 34,
            "logradouro": "reality street",
            "numero": "55"
        }
    }]
    

    浏览器控制台中的命令:

    pessoaStore = new Ext.data.Store({
        autoLoad: true,
        model: 'Aap.model.Pessoa'
    });
    

    在这里,我得到了带有“Pessoa”模型数据的商店,但“Endereco”模型没有关联,我无法获得相应的数据。

    感谢任何帮助!

0 个答案:

没有答案