我有以下观点:
Ext.define("FI.view.InstallBaseList", {
extend: 'Ext.grid.Panel',
require: 'FI.store.InstallBaseStore',
title: 'List',
alias: 'widget.installBaseList',
icon:'table.png',
store:'FI.store.InstallBaseStore',
columns: [],
divId:'',
dockedItems: [],
height: 200,
width: 700,
renderTo: "container",
enableLocking: true,
draggable: true,
resizable: true,
initComponent: function(config){
console.log("here");
}
});
这就是我尝试从控制器创建它的方式:
list = Ext.widget('installBaseList', params);
在浏览器中,我得到此错误:
me.dockedItems.insert is not a function
addDocked(items=[Object { xtype="header", title="List", titleAlign="left", more...}], pos=0) ext-all-debug.js (line 47051)
updateHeader(force=undefined) ext-all-debug.js (line 90398)
beforeRender() ext-all-debug.js (line 90275)
getRenderTree() ext-all-debug.js (line 26056)
render(container=Object { dom=div#container, id="container", $cache={...}, more...}, position=undefined) ext-all-debug.js (line 26193)
constructor(config=Object { divId="container", columns=[0]}) ext-all-debug.js (line 44380)
callParent(args=[Object { divId="container", columns=[0]}]) ext-all-debug.js (line 3728)
constructor(config=Object { divId="container", columns=[0]}) ext-all-debug.js (line 56387)
constructor () ext-all-debug.js (line 3892)
widget(name="installBaseList", config=Object { divId="container", columns=[0]}) ext-all-debug.js (line 5083)
(?)() ListCo...5323863 (line 98)
me.dockedItems.insert(pos + i, item); ext-all-debug.js (line 47051)
此外,在
initComponent
方法中,config
似乎未定义。为什么?问题出在哪里?
最佳答案
initComponent方法必须包含对callParent的调用,以确保还调用父类的initComponent方法。
这是修复程序http://jsfiddle.net/nscrob/EcX3Q/11/
同样,您也不需要将参数config发送到initComponent,该对象config已经分配给了该组件,并且可以由此进行访问。因此,如果您有:
Ext.create('...',{mode:add});在初始化组件中,您将拥有this.mode = add;
关于javascript - ExtJS View 创建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11032760/