我有一个由Sencha Architect 2创建的小应用程序。我已经多次注意到我可以很好地覆盖Controller和Application对象的onLaunch,从不调用该函数。我正在使用试用版2.0.0,构建412.这是应用程序代码:
Ext.Loader.setConfig({
enabled: true
});
Ext.application({
views: [
'MyContainer',
'MyGridPanel'
],
autoCreateViewport: true,
name: 'MyApp',
onLaunch: function() {
var container = Ext.getCmp ('glbContainer');
var cfg = [
{ dataIndex: 'ID', text: 'ID' },
{ dataIndex: 'DISPLAYNAME', text: 'Displayname' }
];
var theGridPanel = this.getComponent ('theGridPanel');
var config = [];
for (var jj=0; jj<cfg.length; jj++) {
var configElem = {};
configElem.xtype = 'gridcolumn';
configElem.dataIndex = cfg [jj].dataIndex;
configElem.text = cfg [jj].text;
configElem.width = 200;
config.push (configElem);
}
alert (config.length);
theGridPanel.reconfigure (config);
}
});
答案 0 :(得分:2)
我认为我们没有onLaunch
方法来覆盖。它应该是launch
。看一下文档。 Application或Controller类没有onLaunch属性。引用文档:
启动方法:在控制器的应用程序之后立即调用 已调用应用程序自己的启动功能。这通常是一个 运行任何必须在应用UI之后运行的逻辑的好地方 初始化。另请参见init,它在应用程序之前调用 发射功能。
示例:
Ext.application({
name: 'MyApp',
launch: function() {
Ext.create('Ext.container.Viewport', {
items: {
html: 'My App'
}
});
}
});
答案 1 :(得分:2)
启动是在这里使用的正确方法。
虽然Application是一个Ext.app.Controller,但它并不总是与控制器完全相同。另请注意,此处不使用Ext.define来定义应用程序,您不应该这样做。但是,您正在调用方法Ext.application({config});
设置应用程序启动方法的正确方法
Ext.application({
name: 'MyApp',
controllers: [
'MyController'
],
launch: function() {
}
});
设置控制器启动方法的正确方法
Ext.define('MyApp.controller.MyController', {
extend: 'Ext.app.Controller',
onLaunch: function() {
}
});