模态引导程序随着更改事件流星而消失 [英] Modal bootstrap disapear with change event meteor

查看:20
本文介绍了模态引导程序随着更改事件流星而消失的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用带有引导程序的模态,所以我有一个带有 3 个选项卡的模态.在此选项卡之一中,我有一个这样的选择:

 

在模态中我使用一个选择,当我改变选择值时,我显示另一个选择等......

对于这个模板,我有一个像这样的 JS 文件:

Template.eachCollections.helpers({集合:函数(){返回收集.find();}});Template.eachCollections.events({'改变#eachCollectionsSelect':函数(){var selected = document.getElementById('eachCollectionsSelect').value;Session.set('selectedCollections', selected);}});Template.widgetFilter.collectionChoose = 函数(参数){返回 parseInt(Session.get('selectedCollections')) === param;}

但是当我在选择更改时触发事件时,模态消失...

你有解决方案吗?

解决方案

我认为这种情况正在发生:

  • 您使用 javacript jQuery 插件调用打开(显示)模态,这基本上修改了 DOM(添加 css 类和内容以使模态可见).
  • 然后在模态中发生更改事件,这导致 Meteor 重新渲染模态,因为它是在模板中定义的,消除了显示"的 css 类.
  • 这会导致模态消失,因为它在隐藏状态下重新渲染.

那么可行的解决方案是什么?

首先,我会让你知道 Meteor 的这一特定部分目前正在由核心开发人员(Meteor UI 项目)重写,在不久的将来(1-3 个月),我们将实现无痛的 jQuery 插件集成,因为 Meteor DOM 重新渲染不会再擦除整个 DOM,所以新引擎足够智能,可以保持对 DOM 属性的修改不变!

因此,基本上您的代码在不久的将来可能会轻松运行,但不是每个人都能耐心等待,所以这里是 Meteor 开发人员提出的解决方案(他们在聚会示例中实现了它).

您将需要另一个表示模态状态的会话变量:显示/隐藏.如果变量为真,则在显示状态中调用模态模板,如果不是,则不执行任何操作.这意味着您将不得不放弃模态转换(淡入/淡出),但它将允许您的模态模板正常重新渲染.

这是模式代码:(使用 Bootstrap 3 !)

模态模板: