下面的代码,我想让Ext.MessageBox点了“OK”按钮时返回true,但是实际执行结果是:先alert了“undefined",然后才弹出Ext.MessageBox,请问要如何解决这个问题?
    function CreateStudents(){
        var res;
        Ext.MessageBox.show({
            title: '创建学生学习帐号 ( <%=StrSName %> )',
            msg: '输入学生姓名:',
            width:300,
            modal: true,
            closable: false,
            defaultTextHeight: 150,
            multiline: true,
            animEl: 'dialog',
            buttons: Ext.MessageBox.OKCANCEL,
            fn: function(btn,text){
                if(btn=='ok'){
                    if (text.trim()!=""){
                        Ext.fly('hStudents').value=text;
                        res= true;
                    }
                    res= false;
                } // end of "btn=='ok'
            }
        });
        alert(res);
        return res;
    }

解决方案 »

  1.   

    1楼正解 callback 比较靠谱 因为fn不是显示时触发的 所以会先alert 你得在callback时候返回就OK了
      

  2.   

    ext的是模拟的,还没执行回调就已经return res了,res的值永远是undefined。。将要执行的代码放到回调中
      

  3.   

    callback 比较靠谱   我觉得这个站做的就很好  可以参考下 <a href="http://www.cqjob.com" target="_blank">