所以,对于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,
}],
});
});
我需要在哈希更改时更新表单值。它可以工作,但不是第一次加载页面时。如何在页面加载后触发更改事件?
答案 0 :(得分:0)
好的,我找到了以下解决方法。我将此事件的处理提取到函数on_hash_change
中,然后只是
Ext.History.on('change', on_hash_change);
on_hash_change(Ext.History.getToken());