Пользовательский компонент в Dataview

Я хотел бы отображать настраиваемый компонент пользовательского интерфейса для каждой записи в магазине.

Похоже, что DataView - лучший способ сделать это. Есть много старых ссылок, в которых говорится, как это возможно с помощью DataViewItem, но я ничего не могу найти в текущих документах (я использую версию 6.0.2). Возможно ли это сделать с extjs6? Вот что у меня есть прямо сейчас, используя шаблон:

var myTpl= new Ext.XTemplate(
    '<tpl for=".">',
        '<div>My object is too complex to be displayed with simple html<div>',
    '</tpl>'   
);

Ext.define( 'MyProject.view.main.MyList', {
    extend: 'Ext.DataView',
    xtype: 'mylist',

    requires: [
        'MyProject.view.main.MyViewModel'
    ],

    viewModel: {
        type: 'myviewmodel'
    },

    bind: {
        store: '{store}'
    },

    // I don't want to do this. I would rather have something like this:
    // itemXType: 'myitem'
    itemTpl: myTpl,

} );

Я не включил реализацию viewModel, потому что единственное, что она делает, — это определяет хранилище прокси. Могу добавить, если нужно.

Есть ли другой способ сделать это? Может быть, что-то кроме просмотра данных?


person uesports135    schedule 21.09.2016    source источник


Ответы (2)


Это возможно с ExtJS 6.0.2. Просто взгляните на пример Touch 2.4. Это пример Touch 2.4, но он по-прежнему работает в ExtJS 6.0.2 с современным набором инструментов. См. эту скрипку Sencha (я просто скопировал туда код из примера Touch и выбрал ExtJS 6.0. 2 - Современный инструментарий). Что касается документов: возможно, вы просматриваете документы классического инструментария. Ext.DataView не существует, но вместо этого вы можете использовать Ext.view.View.

Краткая версия: использовать

 config: {
                defaultType: 'mydataitem',
                useComponents: true
            }

в вашем DataView.

Создайте пользовательский DataItem, который расширяет

Ext.dataview.component.DataItem

и добавьте туда нужные вам компоненты.

person oberbics    schedule 21.09.2016
comment
Ааа, я на самом деле использую классический набор инструментов, который объясняет это. Есть ли способ сделать это с классической версией? Документы для просмотра не имеют ни одного из этих значений... - person uesports135; 21.09.2016
comment
Понимаю. Думал, что вы используете современный, так как вы говорили о DataView. Mabey, который может помочь с адаптацией к классическому ExtJs 6 с использованием Ext.view.View xtemplate">stackoverflow.com/questions/12597830/ - person oberbics; 21.09.2016
comment
К вашему сведению: Ext.view.View — это представление данных... оно было в extjs classic почти десятилетие... отсюда его взяли ST и Modern. - person Dawesi; 03.11.2019

Для версии выше Ext 6.2 используйте xtype: 'componentdataview' вместо xtype: 'dataview'. https://docs.sencha.com/extjs/7.0.0/modern/Ext.dataview.Component.html

person klodoma    schedule 05.11.2019