ExtJS 5: Понимание свойств конфигурации Ext.data.field.Field.reference
Я пытаюсь понять, что делают конфиги Ext.data.field.Field.reference, так как имена немного неловкие. То, что я пытаюсь сделать, это иметь данные, которые выглядят так:
[{
name: 'Mulder',
state: 'Virginia',
friends: [{
name: 'Scully',
type: 'partner'
}, {
name: 'Smoking Man',
type: 'dad'
}]
}]
И переварить это с помощью моделей, поэтому я создаю их так:
Ext.define('Agent', {
extend: 'Ext.data.Model',
fields: ['name', 'state']
});
Ext.define('Relationship', {
extend: 'Ext.data.Model',
fields: ['name', 'type', {
name: 'agentId',
reference: {
type: 'Agent',
inverse: {
role: 'friends'
}
}
}]
});
Причина, по которой я обращаюсь как объект в модели отношений, заключается в том, что этот поток... в основном, я хотел, чтобы моя модель называла что-то не так, как извлеченные данные, поэтому вместо Friend
модель, я хочу, чтобы она называлась Relationship
и ссылка friends
в данных, но все это было без документов. После того, как я решил это, я создал свой магазин ( протестируйте Fiddle здесь):
Ext.create('Ext.data.Store', {
model: 'Agent',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'data3.json',
reader: {
type: 'json'
}
},
listeners: {
load: function(store) {
// outputs friends as a function and getFriends as null
console.log('Agent', store.first().friends, store.first().getFriends);
}
}
});
Так что я пытаюсь сделать так, чтобы мой метод getter для друзей назывался getFriends
вместо friends
Но, глядя на документацию, я не совсем уверен, какой конфиг я использую, чтобы указать это. Я пробовал те, которые кажутся вероятным кандидатом (ассоциация, роль и обратный). На данный момент, я почти уверен, что это свойство, которое я установил в обратном объекте, но, видя, что это недокументировано, я бы не знал.
Ранее в версии 4 у нас было hasMany
ассоциации, но это, кажется, отталкивается / недокументировано вместо reference
путь. Мы бы сделали то, что я пытаюсь сделать, добавив это к Agent
модель (см. Fiddle для рабочего примера):
hasMany: [{
model: 'RelationshipHasMany',
associationKey: 'friends',
name: 'getFriends'
}]
Кто-нибудь знает, как назвать мой геттер? Может быть, вы могли бы также объяснить, что свойства association
а также role
делать.
1 ответ
Вы хотите использовать getterName
:
inverse: {
role: 'friends',
getterName: 'getFriends'
}