Javascript ExtJs:TypeError:this.layout.layout不是函数

Javascript ExtJs:TypeError:this.layout.layout不是函数,javascript,extjs,extjs3,Javascript,Extjs,Extjs3,在我的J2EE web应用程序中,有一个带有表单的窗口。当用户点击一个按钮时显示 new Ext.Button({ text : 'Assign Vehicle', handler : function() { showVehicleAssignWin(); } } 我的ShowVehicleAssingWin函数位于TourPlan.js文件中。这是我的TourPlan.js文件 func

在我的J2EE web应用程序中,有一个带有表单的窗口。当用户点击一个按钮时显示

new Ext.Button({
        text : 'Assign Vehicle',
        handler : function() {
            showVehicleAssignWin();
                    }
    }
我的ShowVehicleAssingWin函数位于TourPlan.js文件中。这是我的TourPlan.js文件

function showVehicleAssignWin(){
assignVehicleWin.show(this);
}

我的AssignVehicleIn窗口正在DataEntryForms.js文件中声明

var assignVehicleWin;

var assignVehicleForm = new Ext.FormPanel({
frame : true,
labelWidth : 200,
labelAlign : 'left',
// renderTo:document.body,
autoScroll : true,
// defaultType: 'displayfield',
bodyStyle : {
    "background-color" : "#000000",
    "padding" : "10px"
},
/*
 * layout : { type : 'vbox', align : 'center' }, defaults : { labelWidth :
 * 200, padding : '10 10 10 25' },
 */

items : [ {
    xtype : 'combo',
    name : 'include_type',
    fieldLabel : '00Vehicle Registration Number',
    editable : false,
}, {
    xtype : 'combo',
    name : 'include_type',
    fieldLabel : '00Device ID',
    editable : false,
}, {
    xtype : 'combo',
    name : 'include_type',
    fieldLabel : '00Default Rep',
    editable : false,
}, {
    xtype : 'combo',
    name : 'include_type',
    fieldLabel : '00Driver',
    editable : false,
}, {
    xtype : 'combo',
    name : 'include_type',
    fieldLabel : '00Assistant',
    editable : false,
}, {
    xtype : 'combo',
    name : 'include_type',
    fieldLabel : '00Porter 1',
    editable : false,
}, {
    xtype : 'combo',
    name : 'include_type',
    fieldLabel : '00Porter 2',
    editable : false,
}, {
    xtype : 'combo',
    name : 'include_type',
    fieldLabel : '00Porter 3',
    editable : false,
},

],
buttons : [ {
    text : 'Delete',
    handler : function() {

    }
}, {
    text : 'View',
    handler : function() {

    }
}, {
    text : 'New',
    handler : function() {

    }
}, {
    text : 'Exit',
    handler : function() {
        assignVehicleWin.hide();
    }
} ]
});

assignVehicleWin = new Ext.Window({
title : 'Vehicle Assigning',
layout : 'fit',
// autoScroll: true,
// y: 120,
width : 480,
height : 530,
minWidth : 480,
minHeight : 530,
resizable : false,
draggable : true,
// modal: true,
plain : true,
// bodyStyle:'padding:8px;',
// buttonAlign:'center',
closeAction : 'hide',
// floating: true,
closable : true,
items : [ assignVehicleForm ]
});
我必须按两次按钮才能显示窗口。窗口也出现了,但它是空的。FireBug控制台说

TypeError: this.layout.layout is not a function
我正在使用ExtJS3.0

有人知道这是怎么回事吗?请帮我纠正这个错误


谢谢

我为您准备了一个示例代码,您可以尝试一下。我希望它能帮助你。 不需要使用Ext.namespace

WindowLayout.js

})


注意:确保这两个文件都已在index.html中注册,我以前尝试过,效果很好。但我需要的是将showVehicleAssignWin函数添加到一个单独的文件中。我还需要在另一个单独的文件中创建assignVehicleWin窗口;在您必须创建名称空间并使用此名称空间的地方,您可以访问AssignVehicleIn;你能举例说明一下吗?因为我是ExtJs新手。请帮助我解决此问题。删除按钮前有多余的分号。请删除,这可能是您获得输出的原因。我是否应该调用assignVehicleWin.show;在OnReady函数中? var assignVehicleWin; var assignVehicleForm = new Ext.FormPanel({ frame : true, labelWidth : 200, labelAlign : 'left', autoScroll : true, bodyStyle : { "background-color" : "#000000", "padding" : "10px" }, defaults : { }, items : [{ fieldLabel : '00Vehicle Registration Number', },{ fieldLabel : '00Device ID' },{ fieldLabel : '00Default Rep' }, { fieldLabel : '00Driver' }, { fieldLabel : '00Assistant' }, { fieldLabel : '00Porter 1' }, { fieldLabel : '00Porter 2' }, { fieldLabel : '00Porter 3' }], buttons : [{ text : 'Delete', handler : function() { } },{ text : 'View', handler : function() { } },{ text : 'New', handler : function() { } },{ text : 'Exit', handler : function() { assignVehicleWin.hide(); } }] }); assignVehicleWin = new Ext.Window({ title : 'Vehicle Assigning', layout : 'fit', width : 480, height : 530, minWidth : 480, minHeight : 530, resizable : false, draggable : true, plain : true, closeAction : 'hide', items : assignVehicleForm });
    Ext.onReady(function(){
var BorderEx = new Ext.Panel({
    renderTo : Ext.getBody(),
    width : 300,
    height : 300,
    style : "margin : 10px 10px 10px 10px;", /* MARGINS config used in boxlayout Or border layout only */
    title : 'test for stackoverflow',
    monitorResize : true,
    items : [{
        xtype : 'button',
        width : 50,
        height : 50,
        text : 'Open Window',
        handler : function() {
            assignVehicleWin.show();
        }
    }]
});