我尝试构建一个非常简单的应用程序,该应用程序基于两个关联模型创建一个商店。(它基于您可以在此处找到的示例。)如果我使用 Shore 类名称,这将有效。但是,一旦我像以前那样使用带有路径和应用程序名称的类名,它就不再起作用了。
我做了以下更改:
- 将“Pessoa”更改为“Aap.model.Pessoa”
- 将“Endereco”更改为“Aap.model.Endereco”
有人可以向我解释一下:
- 根本问题是什么?
- 为了使关联在第二个示例中起作用,我必须进行哪些更改
有效的例子
应用程序.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'}
]});
数据/数据.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'
});
结果,我得到了一个带有两个正确关联模型的商店。但是,如果我更改类名,则关联不再起作用。
不起作用的例子
应用程序.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'}
]});
数据/数据.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”模型没有关联,我无法获得相应的数据。
任何帮助表示赞赏!