Joh*_*ohn 9 twitter-bootstrap bootstrap-datepicker
我有一个模态,如下图所示,

当我选择包含日期选择器的输入字段时,引导模态事件.on('show.bs.modal')被触发,这是非常有问题的,因为当合法显示模态时我正在采取各种异步操作.我认为模态已经显示,并且此事件不应该被触发.
我在bootstrap事件'show.bs.modal'上有一个监听器,如下所述,
handleModalLaunch: () ->
$(@modalClass).on 'show.bs.modal', (event) =>
return if event.dates
promise = new Promise ( (resolve, reject) =>
@setModalData(event)
if (@interactionData)
resolve(@interactionData)
else
reject(false)
)
promise.then(
(results) =>
@trigger 'setRooms', @callBacks
@trigger 'setStudentInfo', @callBacks
(err) ->
err
)
Run Code Online (Sandbox Code Playgroud)
并且有效地,侦听器再次被触发,随后调用promise和相关的回调,事件的触发是有问题的,因为模式已经显示并且我不希望这些回调/承诺被运行.
我添加了return if event.dates(event.dates作为datepicker事件独有的属性),在日期选择器触发模态显示事件的情况下基本上将此代码短路,但当然,这是hacky,我想更好地理解为什么datepicker本身正在触发show事件.潜在地,因为我的节目甚至听众都与模态的类相关联,显示日期选择器的行为可能继承了父模态的目标,并且可能本身就是模态,即模态(datepicker)被显示并且因为日期选择器从父模态继承,事件触发,好像它是'显示'的父模式.我完全混淆了这个吗?(实际上,我现在看起来更清楚,但仍然需要了解如何修复.)
hhs*_*diq 26
这是日期选择器库中的错误.你可以在这里跟踪它在github上.@kroeder提供了解决方法
$("#my-datepicker").datepicker().on('show.bs.modal', function(event) {
// prevent datepicker from firing bootstrap modal "show.bs.modal"
event.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
小智 7
尝试这个:
modal.on('show.bs.modal', function(e) {
if (e.namespace === 'bs.modal') {
// Your code here
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3857 次 |
| 最近记录: |