我正在创建一个更改日志,我决定从.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加载到我的窗口?
答案 0 :(得分:9)
有一个更好的解决方案,它使用面板loader
config的声明:
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
来电。
答案 1 :(得分: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页面已有)。