官方网站:Amaze UI Dialog
问题描述:
我自己封装了一个confirmBox函数,代码如下
function confirmBox(title,content,confirmFn,cancelFn){
if(arguments.length==2){
AMUI.dialog.confirm({
content: arguments[0],
onConfirm: arguments[1]
});
}else{
AMUI.dialog.confirm({
title: title,
content: content,
onConfirm: confirmFn,
onCancel: cancelFn
});
}
};
运行在chrome浏览器里,调试代码如下
confirmBox('确认', '确认信息', function () {
alert('确认信息');
}, function () {
alert('取消信息');
});
title,content,cancelFn正常,但是confirmFn一直无法正确执行,chrome报错,错误源为amazeui.dialog.min.js文件
把报异常的代码粘在dw里研究,代码如下
n.push("</div>"), n.push("</div>"), a(n.join("")).appendTo("body").modal({
onConfirm: function (o) {
o.onConfirm()
},
onCancel: function () {
o.onCancel()
}
}).on("closed.modal.amui", function () {
a(this).remove()
})
问题可以说是一目了然了,看这行代码
onConfirm: function (o) {
o.onConfirm()
},
function上级的作用域本身便有一个o变量,这行代码本来要执行的功能是执行onConfirm函数本身,但是由于function里又传入了一个o变量导致function作用域优先把o解释为传入的参数o,当然报错!
解决方案
onConfirm: function () {
o.onConfirm()
},
把上面function中的o去掉