4

我正在尝试覆盖 ExtJS 4 中的 window.confirm。覆盖应该返回 true 或 false(就像确认但具有出色的 UI)。

window.confirm=function(msg) {var val=Ext.create("Ext.Window",{
    title : 'Extra window!',
    width : 150,                            
    height: 100,
    closable : true,                           
    html : msg,                         
    modal : true,
    onEsc:aa,
    items:[
           {
               xtype:'button',
               text:'Ok',
               handler:function()
               {
                   return true;
               }
           },
           {
               xtype:'button',
               text:'Cancel',
               handler:function(){
                   return false;
               }
           }
           ]
}).show();
function aa(btn)
{
    return false;
}

无论我在哪里使用确认,我都会得到模态窗口,但它没有返回真或假,它是异步运行的。

我尝试使用 showModalDialog 而不是确认,这一次我也没有得到返回值。

是否可以根据用户选择返回true或false(当用户选择ok然后返回true,点击取消时返回false)

4

1 回答 1

4

您不能以同步方式调用模态对话框。如果您想以某种方式将其包装到实用程序函数中,您将从应用程序的不同位置调用,您需要执行以下操作:

showConfirmationDialog: function(question, yesCallback) {
    //... Create you window
    //... Show window - add handler to the YES button and call yesCallback from it
},

...

otherFunction: function() {

   this.showConfirmationDialog('Do you want to delete record?', function() {
      // Delete record
   });

}
于 2012-06-21T11:55:39.107 回答