6

変更ログを作成していますが、.htmlファイルから変更ログをロードすることにしました。

私が持っている

Ext.define('MeridianCRM.dialogs.recentСhanges.recentСhanges', {
    extend  : 'Ext.window.Window',
    title   : 'Последние изменения на сайте',
    modal   : true,
    height  : 400,
    width   : 500,
    resizable : false,
    html: 'changes.html',

    buttons: [{
        text: 'Закрыть',
        handler: function() {
            this.up('window').close();
        }
    }]
});

どうすればこれを解決できますか?(html:'changes.html')HTMLをウィンドウにロードするにはどうすればよいですか?

4

2 に答える 2

9

パネルのloader構成の宣言を使用するより良い解決策があります:

loader: {
    url: 'changes.html',
    autoLoad: true
},

これにより、このグローバルコードが作成されます。

Ext.define('MeridianCRM.dialogs.recentСhanges.recentСhanges', {
    extend  : 'Ext.window.Window',
    title   : 'Последние изменения на сайте',
    modal   : true,
    height  : 400,
    width   : 500,
    resizable : false,
    loader: {
        url: 'changes.html',
        autoLoad: true
    },
    buttons: [{
        text: 'Закрыть',
        handler: function() {
            this.up('window').close();
        }
    }]
});

listener、またはExt.Ajax呼び出しを定義する必要がないため、これは望ましいことです。

于 2013-10-23T09:38:57.850 に答える
4

HTMLを非同期でロードしてから、コンポーネントに挿入する必要があります。それで:

Ext.Ajax.request({
    url: 'changes.html',
    success: function(response){
        // response.responseText will have your html content
        // you can then feed it into your component using update()
    }
});

したがって、idを使用してコンポーネントを宣言すると、次のようになります。

Ext.define('MeridianCRM.dialogs.recentСhanges.recentСhanges', {
    extend  : 'Ext.window.Window',
    title   : 'Последние изменения на сайте',

    id:     : 'my-log',

    ...
});

その後、次のことができます。

Ext.Ajax.request({
    url: 'changes.html',
    success: function(response){
        Ext.getCmp('my-log').update( response.responseText );
    }
});

次のように、パネルに「統合」できます。

Ext.define('MeridianCRM.dialogs.recentСhanges.recentСhanges', {
    extend  : 'Ext.window.Window',
    title   : 'Последние изменения на сайте',

    id:     : 'my-log',

    listeners: {
        'render': function()
            {
                Ext.Ajax.request({
                    url: 'changes.html',
                    success: function(response){
                        Ext.getCmp('my-log').update( response.responseText );
                    }
                });                
            }
    }

    ...
});

ただし、返されたhtmlにタグが含まれている場合は問題が発生する可能性があることに注意して<head>ください(extjsページにはすでにタグが含まれているため)。

于 2013-01-31T11:56:24.840 に答える