我正试图让Bootsrap的模态工作,但当我点击按钮时,我得到的是一个黑屏,没有出现模式对话框,因为我期望它。我正在使用流星。
这是我的代码:
<div class="container">
<h2>Example of creating Modals with Twitter Bootstrap</h2>
<div class="modal hide fade in" id="example" style="display: none; ">
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3>This is a Modal Heading</h3>
</div>
<div class="modal-body">
<h4>Text in a modal</h4>
<p>You can add some text here.</p>
</div>
<div class="modal-footer">
<a class="btn btn-success" href="#">Call to action</a>
<a class="btn" data-dismiss="modal" href="#">Close</a>
</div>
</div>
<p><a data-toggle="modal" href="#example" class="btn btn-primary btn-large">Launch
demo modal</a></p>
</div>
我基本上从http://www.w3resource.com/twitter-bootstrap/modals-tutorial.php获取代码用于测试目的。
答案 0 :(得分:8)
我有类似的问题。问题是Meteor和Bootstrap如何工作的根本区别。 Meteor假设可以随时重新加载标记。如果任何实时变量发生变化,Meteor只会重新加载模板。另一方面,Bootstrap假定模板只加载一次,并在运行时使用javascript进行修改。
正在发生的是流星正在加载我的模态模板。在某些时候我点击某些东西,导致该模态出现在javascript中。但是,一瞬间,实时变量会更改,导致模板再次加载。由于模板隐藏了模态,因此它会覆盖刚刚尝试显示模板的javascript。
我通过将模态的内部放在与外部不同的模板中来解决这个问题。外部模板不响应任何实时变量,因此希望永远不会重新加载。
在:
<template name="modal">
<div class="modal hide fade in" id="settings-modal" data-backdrop="false">
<div class="modal-header">
...
</template>
后:
<template name="modal">
<div class="modal hide fade in" id="settings-modal" data-backdrop="false">
{{> modalInner}}
</div>
</template>
<template name="modalInner">
<div class="modal-header">
...
</template>
答案 1 :(得分:4)
这是一个示例应用程序,它显示了如何使用Meteor显示引导模式:
您可以在此处查看实际版本:
答案 2 :(得分:2)
我找到了一个不错的解决方案 - 我的Modal是它自己的模板,会话变量控制它是否显示。在“渲染”之后,我触发bootstrap的JS“打开”它。
...
{{#if getSession 'isRegisterConfirmation'}}
{{> registerConfirm}}
{{/if}}
</template>
<template name="registerConfirm">
<div class="modal registerConfirmModal">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3>Confirm Name / Info</h3>
</div>
<div class="modal-body">
You are registering as
...
棘手的部分是在Meteor和Bootstrap之间绑定事件。
这实际上效果很好,这是我正在进行的简化版本......
Template.registerConfirm.rendered = function() {
var thing = Session.get('thingToConfirm');
$('.registerConfirmModal').on('hidden', function() {
Session.set('thingToConfirm', '');
Session.set('isRegisterConfirmation', false);
});
$('.registerConfirmModal').on('shown', function() {
$('.registerConfirmModal button.confirm').focus();
});
$('.registerConfirmModal').modal('show');
};
然后触发模态就像将会话变量设置为true一样简单....所有其余的交换都基于事件。
答案 3 :(得分:0)
我遇到了同样的问题。我从模态中删除了'hide'类,之后它就可以了。 我还必须将模式包含在同一模板中,并使用激活它的链接。
而不是
<div class="modal hide fade in" id="example" style="display: none; ">
试试这个
<div class="modal fade" id="example" style="display: none;">