如何在加载页面时触发Ext.History.on('更改',...)?

时间:2015-04-27 11:15:30

标签: javascript extjs extjs4.1 browser-history

所以,对于Ext.js 4.1.0我有这样的代码(抱歉没有jsfiddle,它只是不想在那里工作):

Ext.onReady(function () {
    var update = function () {
        var params = sidebar.getValues();
        // Updating URL
        var oldToken = Ext.History.getToken();
        var newToken = format_hash({
            name: params.name,
        });
        if (newToken !== oldToken) {
            Ext.History.add(newToken);
        };
    };

    Ext.History.init();
    Ext.History.on('change', function(token) {
        var params = parse_hash(token);
        Ext.getCmp('sidebar_name').setValue(params.name);
    });


    var sidebar = Ext.create('Ext.form.Panel', {
        id: 'panel',
        renderTo: 'maindiv',
        width: 300,
        bodyPadding: 10,
        frame: true,
        defaultType: 'textfield',
        layout: {
            type: 'vbox',
            padding: 5,
            align: 'stretch',
        },
        items: [{
            id: 'sidebar_name',
            fieldLabel: 'Name',
            name: 'name'
        }, {
            text: 'Apply',
            name: 'refresh_button',
            xtype: 'button',
            handler: update,
        }],
    });
});

我需要在哈希更改时更新表单值。它可以工作,但不是第一次加载页面时。如何在页面加载后触发更改事件?

1 个答案:

答案 0 :(得分:0)

好的,我找到了以下解决方法。我将此事件的处理提取到函数on_hash_change中,然后只是

Ext.History.on('change', on_hash_change);
on_hash_change(Ext.History.getToken());