klj*_*klj 13 javascript extjs extjs4
我已经习惯了ExtJS 3.X,但我正在努力使用ExtJS 4.
我想创建一个网格的扩展,并能够使用xtype的网格实例.我知道,我必须设置别名,widget.xtypename
但它不适合我.
var MyGrid = Ext.define('mygrid', {
extend:'Ext.grid.Panel',
alias: 'widget.mygrid',
// rest of grid...
});
Ext.create('Ext.window.Window', {
title:'My Window',
items:[{
xtype:'mygrid'
}]
})
Run Code Online (Sandbox Code Playgroud)
我在Chrome控制台中遇到的错误是 Cannot create an instance of unrecognized alias: widget.mygrid
一些帮助会很有意义
Kun*_*nal 12
Ext.define('MyApp.Grid',{
extend: 'Ext.grid.GridPanel',
alias: 'widget.mygrid',
.......
.......
}
Run Code Online (Sandbox Code Playgroud)
现在你可以使用xtype:'mygrid'
小智 6
问题可能是您尝试在调用Ext.define之后立即实例化使用新类的对象.请记住,Ext.define是一个异步过程.任何需要实例化组件的东西都应该在onReady处理程序中,或者在Ext.application(启动)中,或者在组件类的initComponent中,或者在控制器类的init中,因为这些位置保证只能在所有位置之后被调用.定义已完成.
指定以"widget"开头的别名.将允许您在任何需要xtype的地方使用它.在您的简单示例中,您可以尝试执行以下操作:
var MyGrid = Ext.define('mygrid', {
extend:'Ext.grid.Panel',
alias: 'widget.mygrid',
// rest of grid...
}, function() {
Ext.create('Ext.window.Window', {
title:'My Window',
items:[{
xtype:'mygrid'
}]
});
});
Run Code Online (Sandbox Code Playgroud)
这将在定义完成后在回调中实例化您的窗口.
如果您正在使用 MVC 应用程序,则可以通过将视图信息添加到控制器来解决此问题。在您的控制器中,您需要在名为 . 的数组中指定视图views
。这是一个示例:
Ext.define('MyApp.controller.Users', {
extend: 'Ext.app.Controller',
views: ['users.List'],
...
Run Code Online (Sandbox Code Playgroud)
根据您的情况,您可能需要定义views:['mygrid']
.
如果您没有使用 MVC 架构,则需要使用Ext.require
并指定您的网格类是否存在。
归档时间: |
|
查看次数: |
15746 次 |
最近记录: |