我们目前正致力于使用ASP.NET MVC5和几个javascript库(如jquery,bootstrap 3和现在的jquery.dirtyforms)实现的中型Web应用程序。
我查看了有关如何处理bootstrap3模式对话框的脏检查的建议文档,但是空白了。
我遇到的问题是我无法找到防弹解决方案。已经进行了几次尝试,但在某些方面都失败了。
模态对话框有两个按钮关闭和保存(有些按钮也有其他按钮),但只有关闭按钮才会导致脏检查。使用标准bootstrap data-dismiss =" modal"关闭模态。属性。
最明显的处理方法是连接到boostrap模态隐藏事件,例如:
Editor::Editor(...){
effeMenu.setTitle("Menu");
QString menuStyle(
"QMenu {"
"border:10px };"
//more code here
);
effeMenu.setStyleSheet(menuStyle);
AmpMenu=effeMenu.addMenu(QIcon(":/effectImg/img/effePng/amp.png"),"Amp");
Amp1 =AmpMenu->addAction(QIcon(":/effectImg/img/effePng/amp.png"),"Amp 1");
Amp2 =AmpMenu->addAction(QIcon(":/effectImg/img/effePng/amp.png"),"Amp 2");
CabMenu=effeMenu.addMenu(QIcon(":/effectImg/img/effePng/cab.png"),"Cab");
Cab1 =CabMenu->addAction(QIcon(":/effectImg/img/effePng/cab.png"),"Cab 1");
Cab2 =CabMenu->addAction(QIcon(":/effectImg/img/effePng/cab.png"),"Cab 2");
...
}
void Editor::showContextMenu(const QPoint &pos){
QGraphicsItem *item =itemAt(pos);
QAction *action = menu.exec(pos);
menuSelection(action, item);
}
我认为隐藏事件会触发脏检查,确定它会发生。但是当我点击按钮忽略它时,模态不会关闭。
第二次尝试是添加如上所述的自定义事件列表器,但是在按钮上侦听点击事件。我们创建了一个自定义css类"脏检查"我们在所有按钮上添加了触发脏检查并进行了如下设置:
$(document).bind('bind.dirtyforms', function (ev, events) {
var originalBind = events.bind;
events.bind = function (window, document, data) {
originalBind(window, document, data);
$(document).bind('hide.bs.modal', function (d) {
previousTab = d.relatedTarget;
events.onAnchorClick(d);
});
};
});
现在我们正在谈论!单击带有脏检查类的按钮导致脏检并按下"保持"它停留并按下"忽略"它像我们想要的那样关闭模态。尽管幸福是短暂的,因为它似乎只是第一次打开模态。第二次打开模态时,脏检查对表单起作用(它设置了css类isdirty),但是单击按钮时没有执行检查。不知何故,事件不再起作用,我们无法弄清楚原因。我们尝试在document.ready中添加上面的代码,以查看模式是否有用,但遗憾的是没有。
我做错了什么?肯定脏的检查引导模式对话框应该是这个框架最常见的事情之一?我们必须在代码或设置中遗漏一些东西。使用bootstrap 3的这个库的正确方法是什么?