Вход

Просмотр полной версии : ExtJS hasOne assosiation


pablos2038
23.06.2013, 14:49
Коллеги, помогите копнуть. Есть две модели:


Ext.define('App.model.UserStatus', {
fields: [
'id', 'name'
],
belongsTo: ['User'],
...

и

Ext.define('App.model.User', {
fields: [
'id', 'name', 'status_id'
],
// Со справочником статусов
associations: [
{
type: 'hasOne',
model: 'App.model.UserStatus',
primaryKey: 'id',
foreignKey: 'status_id',
getterName: 'getUserStatus',
setterName: 'setPoop',
instanceName: 'UserStatus'
}
...



данные в MySQL.

В Grid'е пробую получить значение поля из справочника:

{
header: 'status',
dataIndex: 'status_id',
renderer: function (value, meta, record) {
return record.getUserStatus().get('name');
}
}

возвращает пустышку. Причем console.log(record) показывает, что в каждой записи User уже есть вложенный объект UserStatus с необходимыми данными, при этом getter getUserStatus выдает совершенно другой объект в котором id имеет правильное значение, а name - пустое.

Еще вопрос, можно ли как-то указывать поля дочерней таблицы в описании полей grid'а ( типа dataIndex: 'UserStatus.name' ) или без render'а никак не обойтись?

skrudjmakdak
24.06.2013, 17:39
честно говоря, я ext немного знаю, но не до такой степени, чтобы помогать.. поэтому если не то скажу, не обижайтесь))
я что то подобное делал так:
var index = store_user_status.find("id", eval('/^' + id + '$/'));//находим index по id'шнику
return (index == -1) ? '' : store_user_status.getAt(index).get('name');

pablos2038
24.06.2013, 18:11
Это понятно, это не вопрос, но по большому счету - это костыль, просто хотелось бы работало "из бокса"