gpt4 book ai didi

session - Meteor 的 Session.set 导致 Bootstrap 模式重复?

转载 作者:行者123 更新时间:2023-12-04 04:59:02 25 4
gpt4 key购买 nike

我正在使用 meteor 0.6.2.1。

我刚刚在调用 Meteor 的 Session.set() 时遇到了 Bootstrap 模式的一个奇怪问题。

我想显示一个简单的模态对话框,并在用户单击模板实例时为其更新一些数据。

我将 Bootstrap 模式示例复制到我的 .html 文件中:

    <body>
{{> hello}}
{{> alert}}
</body>

<template name="hello">
<h1>Hello World!</h1>
{{greeting}}
<input type="button" value="Click" />
<br/>

<!-- Button to trigger modal -->
<a href="#myModal" role="button" class="btn" data-toggle="modal">Launch demo modal</a>
</template>

<template name="alert">
<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Modal header</h3>
</div>
<div class="modal-body">
<p>One fine body…</p>
<p>data = {{data}}</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary">Save changes</button>
</div>
</div>
</template>

并在按钮单击时设置数据:
if (Meteor.isClient) {
Session.set("data", "abcd");
Template.hello.greeting = function() {
return "Welcome to use-bootstrap.";
};
Template.alert.data = function() {
return Session.get("data");
};
Template.hello.events({
'click input': function() {
if (typeof console !== "undefined" && console !== null) {
return console.log("You pressed the button");
}
}
});
Template.hello.events({
'click .btn': function() {
var randomId;
randomId = Random.id();
console.log("data = " + Session.get("data"));

// this cause duplicate Template.alert
Session.set("data", randomId);
}
});
}

if (Meteor.isServer) {
Meteor.startup(function() {
return console.log("Server Start!!");
});
}

我使用 chrome 对其进行调试,并看到单击按钮时模态元素将重复。

我的代码怎么了?

最佳答案

我不是 100% 确定为什么会发生这种情况,但我相信这与对 JS 代码( bootstrap )中保存的模态节点的引用有关。

为了解决它,我添加了:

Template.alert.preserve(["#myModal"]);

来自 meteor docs :

Preservation is useful in a variety of cases where replacing a DOM element with an identical or modified element would not have the same effect as retaining the original element. These include:

  • Input text fields and other form controls
  • Elements with CSS animations
  • Iframes
  • Nodes with references kept in JavaScript code

关于session - Meteor 的 Session.set 导致 Bootstrap 模式重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16373442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com