Sencha Touch - проблема с областью просмотра - PullRequest
0 голосов
/ 09 мая 2011

Я использую ToolbarDemo и ListDemo от Дрю Нила (@nelstrom)! Все работает отлично! Но есть одна проблема с VIEWPORT - я думаю!

вот мой код:

http://www.sencha.com/forum/showthread.php?132823-Viewport-Problem

Я надеюсь, что кто-нибудь может мне помочь! Спасибо!

---------------------------

EDIT: спасибо, вы ошиблись за ваш быстрый ответ! но теперь я получаю эту ошибку (строка 33):

TypeError: Result of expression 'ToolbarDemo.views.Viewport.setActiveItem' [undefined] is not a function.

мой код:

ToolbarDemo.views.detailPanel = Ext.extend(Ext.Panel, {
        id: 'detailpanel',
        tpl: ['<div class="live">',
                        '<div style="float:right;padding-right: 10px;padding-bottom: 10px;">{titel}</div>',
                        '<div style="text-align:center; margin-left: auto; margin-right: auto;">',
                        '<video width="280" height="280" x-webkit-airplay="allow" poster="playlive.png" controls="controls" id="video_player" style="" tabindex="0"><source src="{video}"></source></video>',
                        '</div>'],
        dockedItems: [
            {
                xtype: 'toolbar',
                items: [{
                    text: 'zur&uuml;ck',
                    ui: 'back',
                    handler: function() {
                        ToolbarDemo.views.Viewport.setActiveItem('disclosurelist', {type:'slide', direction:'right'});
                    }
                }]
            }
        ]
    });

ToolbarDemo.views.Beitrage = Ext.extend(Ext.List, {
title: "Beitr&auml;ge",
iconCls: "btnbeitraege",
id: 'disclosurelist',
        store: storeXML,
        itemTpl: '<div class="contact"><img src="{bild}" width="48" height="26" border="0"/> {titel}</div>',
        grouped: true,
        onItemDisclosure: function(record, btn, index) {
        var details = Ext.getCmp('detailpanel');
        details.update(record.data);
        //this is ok because Viewport is an object
        ToolbarDemo.views.Viewport.setActiveItem('detailpanel');
 } 
});

ToolbarDemo.views.Viewport = new Ext.Panel ({
        fullscreen: true,
        cardSwitchAnimation: 'slide',
        items: [new ToolbarDemo.views.Beitrage(), new ToolbarDemo.views.detailPanel()]
    });

storeXML.load();
Ext.reg('beitrage', ToolbarDemo.views.Beitrage);

Я надеюсь, что любой может помочь! спасибо!

1 Ответ

0 голосов
/ 11 мая 2011

Проблема в том, что вы ничего не создали с помощью 'new'.По сути, вы играете с классами, а не с объектами.ToolbarDemo.views.detailPanel является классом, а не объектом панели, поэтому вы должны создать его, прежде чем сможете его использовать.

Вы сделали это (или скопировали) как часть инициализацииmain Viewport:

ToolbarDemo.views.Viewport = new Ext.Panel ({
        fullscreen: true,
        layout: 'card',
        cardSwitchAnimation: 'slide',
        items: [new ToolbarDemo.views.Beitrage(), new ToolbarDemo.views.detailPanel()]
    });

Внутри функции раскрытия вы можете сделать что-то вроде:

    onItemDisclosure: function(record, btn, index) {
            var details = Ext.getCmp('detailpanel');
            details.update(record.data);
            //this is ok because Viewport is an object
            ToolbarDemo.views.Viewport.setActiveItem('detailpanel');
        }    
...