【问题标题】:Javascript callback function for confirm bootbox [duplicate]确认引导框的Javascript回调函数[重复]
【发布时间】:2014-11-27 07:16:30
【问题描述】:

我使用bootbox 来确认我向用户发出警报的警报框。它是从一个 js 文件调用的,我有一个创建它的通用函数。如何使用回调函数获取确认对话框的结果:

所以我的js如下:

 var message = "Do you want to close?";

 loadConfirmAlert(message);
 if (result) {
     //do stuff
 }

另外一个js文件中的loadCofirmAlert函数如下:

var loadCofirmAlert = function (message) {

    bootbox.confirm(message, function (result) { });
}

我不确定的是如何将此结果值传递回调用函数?

【问题讨论】:

标签: javascript jquery bootbox


【解决方案1】:

这样试试

var message = "Do you want to close?";

loadConfirmAlert(message,function(result){
    if (result) {
        //do stuff
    }
});

var loadCofirmAlert = function (message,callback) {
    bootbox.confirm(message, function (result) { 
        callback&&callback(result);
    });
}

更新

在哪里

callback&&callback(result)

只是一个较短的版本

if (callback)callback(result); //if callback defined, call it

你也可以通过使用检查回调是否是一个函数

(typeof(callback)==="function")&&callback(result)

【讨论】:

  • 这很好用 - 你能解释一下回调&&callback(result);语法?
【解决方案2】:

你必须把 if 语句放在回调中

bootbox.confirm(message, function (result) {
    if (result) {
        //do stuff
    }
});

您面临的问题是您的loadConfirmAlert(message); 没有设置任何名为result 的全局变量,因此在您的第一个代码sn-p 中,result 永远不会被填充。

您的问题在How do I return the response from an asynchronous call? 中得到了很好的描述(尽管他用 ajax 提到了它,但您基本上遇到了同样的问题)

【讨论】:

  • if 语句虽然包含我隐藏的特定于我调用 loadCofirm 的页面的字段,所以我真的想将结果传递回该页面?
猜你喜欢
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 2019-02-16
  • 2010-11-22
相关资源
最近更新 更多