Я пытаюсь построить связь между двумя моделями, которые отправляют независимые запросы.Я определил хранилища ViewModel, прокси-серверы и ассоциации ссылок, и он работает только для вложенных данных, но не для отдельных запросов.Методы получения всегда не определены, а связанные записи не отображаются.Я запутался, потому что примеры документов (ссылка или hasOne) не работают для этого случая.Что я делаю не так, пожалуйста, помогите!
Версия: v6.5.3.6
Api-Response
/contracts.json
"data": [{
"id": 5,
"tariff_id": 1,
"user_id": 1,
"name": "contract-name"
}, ...]
/tariffs.json
"data": [{
"id": 1,
"name": "Phone",
}, ...]
Модели:
Ext.define('App.model.contract.Contract', {
extend: 'App.model.Base',
requires: [
'App.model.tariff.Tariff',
],
idProperty: 'id',
fields: [{
name: "id",
type: "int",
}, {
name: 'name',
type: 'string',
}, {
name: 'tariff_id',
reference: {
type: 'App.model.tariff.Tariff',
role: 'tariff',
getterName: 'getTariff',
},
}],
proxy: {
type: 'api',
url: '/contracts',
},
});
Ext.define('App.model.tariff.Tariff', {
extend: 'App.model.Base',
fields: [{
name: "id",
type: "int",
}, {
name: 'name',
type: 'string',
}],
proxy: {
type: 'api',
url: '/tariffs',
},
});
ViewModel:
Ext.define('App.view.user.EditorModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.user.editor',
requires: [
'App.model.tariff.Tariff',
'App.model.contract.Contract',
],
stores: {
contracts: {
model: 'App.model.contract.Contract',
autoLoad:true,
},
tariffs: {
model: 'App.model.tariff.Tariff',
autoLoad:true,
},
},
});
Контроллер:
Ext.define('App.view.user.EditorController', {
extend: 'App.ViewController',
alias: 'controller.user.editor',
test() {
const contract = this.getStore('contracts').getById(5);
console.log(contract);
console.log(contract.get('tariff_id')); //return ids instead of entities
console.log(contract.getTariff()); //not working
},
});
PS my api
прокси-ридер указывает на root data
.Работает нормально.
PSS Я также попробовал hasOne
безключевых ассоциаций без какого-либо успеха.