2010-09-02 161 views
4

我有一些类如何让参数在extjs的构造函数?

AddOrgWindowUI = Ext.extend(Ext.Window, { 
title: 'form', 
width: 400, 
height: 198, 
layout: 'form', 
padding: 5, 
initComponent: function() { 
    this.items = [ 
     { 
      xtype: 'textfield', 
      fieldLabel: 'parapapa', 
      anchor: '95%', 
      value: m, 
      emptyText: 'perapapa' 
     } 
    ]; 
    AddOrgWindowUI.superclass.initComponent.call(this); 
}}); 
当我创建一个对象 var AddOrgWindowForm = new AddOrgWindowUI('aaa');我想ARG(“AAA”)到我的新形式值(M值)

。如何得到它? 即时通讯设法initComponent: function(m) {和那不工作。

回答

7

initComponent函数内部调用上的Ext.Window基类中的一个。你不应该尝试直接调用它。这就是为什么它不能处理你自己的参数。

因此,我建议您使用extending ExtJS classes时的标准窗体参数。

这与使用要覆盖的属性或方法初始化对象一样简单(或者在属性不存在的情况下插入)。然后只需使用this关键字来访问它们。

这是可能的,因为对于每个Ext.Component及其子类,传递给构造的第一个参数是一个对象,在该对象中的每一个成员将被复制到构造新的对象。而且大多数ExtJS类都是从Ext.Component直接或间接扩展而来的,并且从Ext.Window扩展到Ext.Component

这里,你有你的榜样固定:

var AddOrgWindowUI = Ext.extend(Ext.Window, { 
    title: 'form', 
    width: 400, 
    height: 198, 
    layout: 'form', 
    padding: 5, 

    initComponent: function() { 
     this.items = [ 
      { 
       xtype: 'textfield', 
       fieldLabel: 'parapapa', 
       anchor: '95%', 
       value: this.initialValue, 
       emptyText: 'perapapa' 
      } 
     ]; 
     AddOrgWindowUI.superclass.initComponent.call(this); 
    } 
}); 

function test() { 
    var AddOrgWindowForm = new AddOrgWindowUI({initialValue:'aaa'}); 
    AddOrgWindowForm.show(); 
} 
+0

thx很多,而thx for链接;) – 2010-09-02 17:17:38

0

通米作为initComponent的精氨酸:

编辑:

AddOrgWindowUI = function(input) { 
    var m = input; 
    return Ext.extend(Ext.Window, { 
     title: 'form', 
     width: 400, 
     height: 198, 
     layout: 'form', 
     padding: 5, 
     initComponent: function() { 
      this.items = [ 
     { 
      xtype: 'textfield', 
      fieldLabel: 'parapapa', 
      anchor: '95%', 
      value: m, 
      emptyText: 'perapapa' 
     } 
    ]; 
      AddOrgWindowUI.superclass.initComponent.call(this); 
     } 
    }); 
} 
+0

THX,但如何声明一个新的对象? var AddOrgWindowForm = new AddOrgWindowUI.initComponent('aaa'); - 没有工作。 – 2010-09-02 14:49:24

+0

我上面的编辑可能会这样做。 – Silkster 2010-09-02 14:57:40

+0

它不工作太:(试试吧。萤火虫说 - “AddOrgWindowUI.initComponent不是一个函数” – 2010-09-02 15:53:28