如何在extjs获取构造函数的args?

时间:2010-09-02 13:11:11

标签: javascript extjs arguments

我有一些课

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) {而那不起作用。

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

将m作为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);
        }
    });
}