Отображение модели множества полей в сетке extjs

#extjs

#extjs

Вопрос:

У меня есть 2 модели ExtJS, называемые ModelBase и ModelChild. Я настроил дочерний элемент модели «hasMany» для базы моделей.

 Ext.define('app.model.modelBase', {
    extend: 'Ext.data.Model',

    requires: [
        'Ext.data.field.String'
    ],
    uses: [
        'app.model.modelChild'
    ],

    fields: [{
        name: 'post_code'
    }, {
        name: 'building_name'
    }],

    hasMany: {
        associatedName: 'cabinet',
        model: 'app.model.modelChild',
        associationKey: 'cabinet'
    }
});
  

Это дочерний элемент модели

 Ext.define('app.model.modelChild', {
    extend: 'Ext.data.Model',

    requires: [
        'Ext.data.field.Field'
    ],

    belongsTo: 'app.model.modelBase',

    fields: [{
        name: 'operator'
    }]
});
  

Мой вопрос заключается в том, как отобразить поля ModelChild (operator) в ExtJS grid? У меня будет более 1 записи с использованием ModelChild.
Я хочу использовать «rowwidget» в плагине ExtJS grid, но не смог настроить отображение оператора (из ModelChild)

В настоящее время я использую ExtJS 7.1

Комментарии:

1. Вопрос на самом деле в том, как ВЫ хотите, чтобы эти значения отображались? Похоже, вы хотите, возможно, использовать сетку внутри сетки? Если да, не могли бы вы, возможно, приложить пример того, что вы пытаетесь сделать, или, может быть, картинку того, чего вы пытаетесь достичь?

Ответ №1:

Для отображения ассоциаций hasOne или hasMany необходимо использовать средство визуализации

 columns: [{
    dataIndex: 'notWorkingForHasOne',
    text: 'Type',
    flex: 1,
    // dataIndex is not working
    renderer: 'renderType'
}]
  

и внутри ViewController

 // for hasOne userDetail
renderType: function (dataIndex, cell, record) {
    return record.getUserDetails().get('type');
},

// for hasMany publications
renderPublicationsFirstName: function (dataIndex, cell, record) {
    return record.publications().first().get('name');
},