以下代码确实按预期销毁记录,但回调是从一个模式继承到下一个模式。因此,当一条记录被正确删除时,Rails 也一直在寻找删除以前删除的记录。我正在使用 Twitter Bootstrap 模式窗口,它位于 Rails 视图模板中,并在触发标准 Rails 删除方法时显示,替换了常规的 javascript 对话框。
触发后如何清除回调?
$.rails.allowAction = function(element) {
var message = element.data('confirm'),
answer = false, callback;
if (!message) { return true; }
if ($.rails.fire(element, 'confirm')) {
myCustomConfirmBox(message, function() {
callback = $.rails.fire(element,
'confirm:complete', [answer]);
if(callback) {
var oldAllowAction = $.rails.allowAction;
$.rails.allowAction = function() { return true; };
element.trigger('click');
$.rails.allowAction = oldAllowAction;
}
});
}
return false;
}
function myCustomConfirmBox(message, callback) {
$('#dialog-confirm').modal('show');
$('#dialog-confirm button.primary').click(function(){
callback();
$('#dialog-confirm').modal('hide');
});
}
编辑:由于我对任何删除操作一遍又一遍地使用相同的基本模式,因此回调排队。所以当一个删除动作之前被取消时,它仍然会在另一个对象的另一个删除实例上被触发,因为回调仍然有效。底线:如何清除回调队列?