Я попытался создать очень простое приложение, которое создает хранилище на основе двух связанных моделей. (Он основан на примере, который вы можете найти here.) Это работает, если я использую имя класса берега. Тем не менее, он больше не работает, как только я использую имя класса с контуром и именем приложения, как я привык делать.Ассоциации и имена классов
Я сделал следующие изменения:
- Изменено "Пессоа" в "Aap.model.Pessoa"
- Изменено "Endereco" в "Aap.model.Endereco"
Могли кто-нибудь, пожалуйста, объясните мне:
- В чем проблема?
- Что я должен изменить, чтобы сделать assosiations работать во втором примере
Пример, который работает
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']});
приложение /model/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'}
]});
данные/данные.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'
});
Здесь я получаю в результате хранилище с данными модели «Пессоа», но модель «Endereco» не связан и Я не могу получить соответствующие данные.
Любая помощь приветствуется!