ExtJS中的对象.Ext.create或new运算符?

kai*_*ity 9 extjs

我是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.

Rob*_*gar 9

主要区别在于,Ext.create('Ext.form.Panel')如果Ext.form.Panel该类不存在,将自动下载相应的javascript文件.vanilla new运算符不能这样做 - 它不知道Ext.form.Panel可能是什么或可能找到定义的位置.

未定义"无法读取属性"面板"错误表明不仅Ext.form.Panel没有定义,也不是父Ext.form命名空间对象.