1

ある種のアプリ内コンソールを作成して、テスト中にデバッグ情報を出力(および簡単に読み取る)できる別のタブをアプリに含めることができるようにしたいと思います。

私はSenchaTouchを初めて使用しますが、jQueryでは次のようなことを行うのは簡単です。

window.log = function(msg) {
    $("#Console").append('<div>' + msg + '</div>');
}

私のMain.jsビューには次のものが含まれています。

{
    title: 'Console',
    iconCls: 'info',
    scrollable: true,

    items: [
        {
            docked: 'top',
            xtype: 'titlebar',
            title: 'Console'
        },
        {
            xtype: 'container',
            id: 'console'
        }
    ]
}

これは私が思いつくことができる最高のものですが、コンテナのHTML全体を取得してからリセットするため、これは非常に無駄であり、全体的に悪いようです。

    Ext.log = function (msg) {
        var console = Ext.get('console');
        var html = console.getHtml();
        console.setHtml(html + '<div>' + msg + '</div>');
    };

より良い方法が必要です...そうですか?

4

2 に答える 2

2

毎回パネルを作成して、コンテナに追加できます。

var myPanel = Ext.create('Ext.Panel', {
    html: 'This will be added to a Container'
});

Ext.getCmp('console').add([myPanel]);
于 2013-02-25T13:10:51.340 に答える
1

短期間だけメッセージが必要な場合は、次を追加できます。

var actionSheet = Ext.create('Ext.ActionSheet', {
    items: [
        {
            xtype: 'container',
            html  : 'My Message',
            style: 'color: white;'
        }
    ],
    itemId: 'debugMessage',
    listeners: {
        show: function () {
            Ext.defer(function(){
                Ext.Viewport.down('.container[itemId=debugMessage]').hide();
                Ext.defer(function(){
                    Ext.Viewport.down('.container[itemId=debugMessage]').destroy();
                },250);
            },1400);
        }
    }
});
Ext.Viewport.add(actionSheet);
actionSheet.show();
于 2013-02-25T21:05:44.443 に答える