Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   ExtJS hasOne assosiation (https://javascript.ru/forum/extjs/39274-extjs-hasone-assosiation.html)

pablos2038 23.06.2013 14:49

ExtJS hasOne assosiation
 
Коллеги, помогите копнуть. Есть две модели:

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

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


Часовой пояс GMT +3, время: 13:58.