Как я могу использовать DataView с DataItem в моем приложении Sencha Touch?

У меня есть приложение сенсорного Сенча. (Я новичок с сенсорным Сенча!). Я пытаюсь создать диалоговое окно для добавления новой папки virtuel и поместить туда файл. Пример:

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

Вот мой код:

Моя модель: для файла

Ext.define('tara.model.WorkFolder',
{
    extend: 'Ext.data.Model',

    config: {
        fields: [
            { name: 'filePath', type: 'string' },
            { name: 'addedAt', type: 'date' },
            { name: 'size', type: 'integer' }
        ]
    }
});

Моя модель для папки:

Ext.define('tara.model.WorkFolders',
{
    extend: 'Ext.data.Model',

    config: {
        fields: [
            { name: 'id', type: 'integer' },
            { name: 'name', type: 'string' },
            { name: 'createdAt ', type: 'date' }
        ]
    }
});

Мои магазины:

Ext.define('tara.store.WorkFolderStore',
{
    extend: 'tara.core.taraStorageStore',

    mixins: {
        translatable: "Ext.ux.Translatable"
    },

    requires: [
        'tara.model.WorkFolder',
        'tara.core.taraStorageStore'
    ],

    config: {
        model: 'tara.model.WorkFolder'
    }
});

а также

Ext.define('tara.store.WorkFoldersStore',
{
    extend: 'tara.core.taraStorageStore',

    mixins: {
        translatable: "Ext.ux.Translatable"
    },

    requires: [
        'tara.model.WorkFolders',
        'tara.core.taraStorageStore'
    ],

    config: {
        model: 'tara.model.WorkFolders',
        autoLoad: true,
        saveKey: "workfolderRecords",
        storeId: 'Workfolders'
    }
});

Вот моя диалоговая панель:

Ext.define('tara.view.AddToWorkFolderPopup', {

    extend: 'Ext.Panel',
    xtype: 'addToWorkFolderPopup',
    alias: 'widget.addToWorkFolderPopup',

    requires: [
        'tara.core.FileUtil',
        'tara.view.WorkFolderDataView',
        'tara.store.WorkFoldersStore'
    ],

...

    constructor: function()
    {
        this.callParent(arguments);

        this.setItems({
            flex:1,
            xytpe: 'container',
            items: [
                {
                xtype : 'toolbar',
                docked: 'top',
                title: this.tr("Arbeitsmappen"),
                items: [{
                    xtype: 'spacer'
                },{
                    xtype: 'button',
                    itemId: 'minimizeButton',
                    align: 'right',
                    hidden: true,
                    iconMask: true,
                    handler: this.onMinimizeButtonTapped,
                    scope: this
                }]
              },{
                    xtype: 'spacer'
                },{
                    xtype: 'component',
                    itemId: 'title',
                    margin: '4 0 0 25',
                    html: '<h3>'+this.selectedFile+'</h3>'
                },{
                    xtype: 'spacer',
                    height:20
                },{
                    xtype: 'workFolderDataView'
                },{
                    xtype: 'button',
                    height: 30,
                    margin: '4 0 0 25',
                    ui: 'confirm-filled',
                    itemId: 'syncButton',
                    maxWidth:200,
                    text: this.tr('Neue Arbeitsmappe'),
                    scope: this,
                    handler: function()
                    {

                        Ext.Msg.prompt('Arbeitsmappe Erstellen', 'Bite gebe einen namen ein:', function(workFolderTitle)
                        {
                            // Create a new workfolder for the workfolder store.
                            var workFolder = {
                                id: 1,
                                name: workFolderTitle,
                                createdAt: new Date()
                            }

                            // get current workfolder store.
                            var workFolderStore = Ext.getStore("Workfolders");
                            workFolderStore.add(workFolder);
                            workFolderStore.sync();

                        });
                    }
                }

            ]
        });
    }
});

Вот мой dataview:

Ext.define('tara.view.WorkFolderDataView',
    {
        extend: 'Ext.dataview.DataView',
        alias: 'widget.workFolderDataView',

        requires: [
            'tara.view.WorkFolderDataItem'
        ],

        mixins: [
            'Ext.ux.Translatable'
        ],

        config: {
            width:300,
            height:100,
            defaultType: 'workFolderDataItem',
            useComponents: true
        }
    });

Вот мой DataItem:

Ext.define('tara.view.WorkFolderDataItem',
    {
        extend: 'Ext.dataview.component.DataItem',
        alias: 'widget.workFolderDataItem',

        mixins: [
            'Ext.ux.Translatable'
        ],

        config: {
            padding: 10,
            layout: {
                type: 'hbox'
            },
            defaults: {
                margin: 5
            },
            items: [{
                xtype: 'checkboxfield',
                text: 'Val1'
            },{
                xtype: 'component',
                flex: 1,
                html: 'val2',
                itemId: 'textCmp'
            }]
        },

        /**
         * To save whether the last tap was a longpress tap
         */
        longPressed: false,

        /**
         * On every record update the thumbnail will be loaded and the a listener will be added, for getting if a website thumbnail gets tapped
         *
         * @param
         */
        updateRecord: function(_record)
        {
            // Provide an implementation to update this container's child items
            var me = this;

            me.down('#textCmp').setHtml(record.get('val2'));

            me.callParent(arguments);
        }
    });

0 ответов

Другие вопросы по тегам