我要创建自己的“库”,因为我想让代码保持DRY。这个想法只是扩展SimpleController并给它发送一个名称,这样它就可以一般地加载已经创建的存储和视图,但是在我的控制台中,我收到一条消息,提示nameOfController未定义。
1.)在此示例中,为什么未定义nameOfController?
2)我知道如何扩展SimpleController,但是什么时候该初始化nameOfController呢?在init()
函数中?在加载存储[]和视图:[]之前,是否有一些功能可以执行?
Ext.define('MyApp.controller.SimpleController', {
extend: 'Ext.app.Controller',
nameOfController: "",
stores: ['MyApp.store.' + this.nameOfController],
views: ['MyApp.view.' + this.nameOfController + '.Index']
编辑:(扩展示例)
Ext.define('MyApp.controller.Users', {
extend: 'MyApp.controller.SimpleController',
nameOfController: "Users" //I want to this nameOfController
//changes the one in superclass
});
最佳答案
您可以为控制器定义构造函数。例:
Ext.define('MyApp.controller.SimpleController', {
extend: 'Ext.app.Controller',
nameOfController: "",
//stores: ['MyApp.store.' + this.nameOfController],
//views: ['MyApp.view.' + this.nameOfController + '.Index']
constructor: function(config) {
var name = config.nameOfController;
config.stores = config.stores || [];
config.views = config.views || [];
config.stores.push('MyApp.store.' + name);
config.views.push('MyApp.view.' + name + '.Index');
this.callParent(arguments);
}
});