extjs在类上调用Ext.onReady函数

时间:2011-11-12 17:52:31

标签: class function extjs call extjs3

我有这个结构:

Example.Form = Ext.extend(Ext.form.FormPanel, {
// other element

 , onSuccess:function(form, action) {
 }

}
Ext.reg('exampleform', Example.Form);

Ext.onReady(function() {
            var win = new Ext.Window({
                id:'formloadsubmit-win'
                ,items:{id:'add', xtype:'exampleform'}
            });
            win.show();
})

我删除了上面的额外代码......

我想这样做:当我在功能上提交表格时 - > Example.Form类中的onSuccess能够关闭正文窗口。 (当成功结果被提交并且打开的窗口的主体变得关闭时)

我为我糟糕的英语道歉。

1 个答案:

答案 0 :(得分:1)

代码的结构应该允许一个地方存储您注册为xtypes的组件。它还应该具有构成应用程序的组件的顶级命名空间。这样,您始终可以引用应用的各个部分。打破控制器逻辑也是一个好主意。对于小型应用程序,单个控制器可以正常工作,但一旦应用程序增长,最好为应用程序安装许多控制器,每个控制器一个。

以下是您在该示例中输入的代码的修改版本。它将处理成功事件,其结构符合上述建议。

    Ext.ns('Example');
    /* store components to be used by app */
    Ext.ns('Example.lib');
    /* store instances of app components */
    Ext.ns('Example.app');

    Example.lib.Form = Ext.extend(Ext.form.FormPanel, {
    // other element

     // moved to app controller
     //onSuccess:function(form, action) {
     //}

    });

    Ext.reg('exampleform', Example.lib.Form);

    Example.lib.FormWindow =  Ext.extend(Ext.Window,{
        initComponent: function(){
            /* add the items */
            this.items ={itemId:'add', xtype:'exampleform'};

            /* ext js requires this call for the framework to work */
            Example.lib.FormWindow.superclass.initComponent.apply(this, arguments);
        }
    });

    Ext.reg('exampleformwin', Example.lib.FormWindow);

    /*
        manage/control the app
    */
    Example.app.appController = {
        initApp: function(){
            Example.app.FormWindow = Ext.create({xtype:'exampleformwin', id:'formloadsubmit-win'});
            Example.app.FormWindow.show();

            /* get a reference to the 'add' form based on that item id and bind to the event */
            Example.app.FormWindow.get('add').on('success', this.onAddFormSuccess, this );

        },

        /* the logic to handle the add-form's sucess event */
        onAddFormSuccess: function(){
            Example.app.FormWindow.hide();
        }

    }

    Ext.onReady(function() {
        /* start the app */
        Example.app.appController.initApp()
    })