我是ExtJS的新手.我开始编写一个小形式.我对Ext.create和new运算符的使用感到困惑.
所以这是代码:
我想编写一个表单.我在其中一个sencha页面上找到了一个小例子.它创建一个这样的表单:
var descAndSystem = new Ext.form.Panel ({
region: 'center',
layout: 'vbox',
margins: '5 5 5 5',
xtype: 'form',
title: 'Some title',
id: 'descAndSystem',
width: '800',
items: [
{ xtype: 'textarea',
fieldLabel: 'Provide a description',
name: 'rightdescription',
},
{
xtype: 'combobox',
fieldLabel: 'Choose System',
store: systems,
queryMode: 'local',
displayField: 'name',
valueField: 'name',
name: 'system'
}
]
});
Run Code Online (Sandbox Code Playgroud)
然后我在视口中使用了descAndSystem作为组件:
Ext.create('Ext.container.Viewport', {
layout: 'border',
id: 'wizardcontainer',
items: [
descAndSystem,
{
region: 'south',
layout: 'hbox',
margins: '5 5 5 5',
items: [
{ xtype: 'button', text: '<< Back', handler: onNext },
{ xtype: 'button', text: 'Next >>', handler: onNext },
{ xtype: 'button', text: 'Cancel', align: 'right', handler: function () { alert ('Abgebrochen geklickt.'); } }
]
}
]
});
Run Code Online (Sandbox Code Playgroud)
经过大量的反复试验后,我发现我可以通过以下代码访问表单的值:
Ext.getCmp ('descAndSystem').getForm ().findField ('rightdescription').getValue ()
Run Code Online (Sandbox Code Playgroud)
与我买的一本书相比,下面的代码不起作用:
Ext.getCmp ('rightdescription').getValue ()
Run Code Online (Sandbox Code Playgroud)
但我真正的问题是我会期待的
Ext.create ('Ext.form.Panel', { .... });
Run Code Online (Sandbox Code Playgroud)
是相同的
new Ext.form.Panel ( {...});
Run Code Online (Sandbox Code Playgroud)
但当我执行后者时,Chrome解释器说:
Uncaught TypeError: Cannot read property 'Panel' of undefined'
Run Code Online (Sandbox Code Playgroud)
经过大量的反复试验,以下工作:
new Ext.Panel ( {...});
Run Code Online (Sandbox Code Playgroud)
不仅我在文档中找不到对该名称对象的任何引用,也包括该行
Ext.getCmp ('descAndSystem').getForm ().findField ('rightdescription').getValue ()
Run Code Online (Sandbox Code Playgroud)
现在产生一个错误:
Uncaught TypeError: Object [object Object] has no method 'getForm'
Run Code Online (Sandbox Code Playgroud)
另外,我试图通过DOM操作替换另一种形式的descAndSystem,文档中有各种替换方法.他们都没有工作,我总是收到错误消息"没有方法'替换'".我强烈怀疑我从根本上弄错了什么.任何提示?我在Ubuntu 10.10 64位上使用ExtJS 4和Chromium 17.0.963.56.
主要区别在于,Ext.create('Ext.form.Panel')
如果Ext.form.Panel
该类不存在,将自动下载相应的javascript文件.vanilla new
运算符不能这样做 - 它不知道Ext.form.Panel
可能是什么或可能找到定义的位置.
该未定义"无法读取属性"面板"错误表明不仅Ext.form.Panel
没有定义,也不是父Ext.form
命名空间对象.