Meteor 与 Session.set 和 jQuery 在一个调用中组合在一起
Meteor combined with Session.set and jQuery in one call
我正在尝试在Meteor中获取一些非常基本的东西,当用户单击按钮时,会调用Session.set(),然后显示一个div。问题是,如果我不调用 Session.set(),则行为符合预期,单击按钮时会显示div。但是一旦我包含 Session.set(),我需要单击两次才能实际显示消息。为了确保可以重现该行为,请确保页面是干净的加载,而不是流星刷新!HTML 的代码是:
<head>
<title>test</title>
</head>
<body>
{{> home}}
</body>
<template name="home">
<div>
<input type="button" id="addButton" value="add">
</div>
{{> popup}}
</template>
<template name="popup">
{{#with messageHelper}}
<div id="messageDiv" style="display: none">
message is {{message}}
</div>
{{/with}}
</template>
这是让它打勾的Javascript。
Template.home.events({
'click #addButton': function(){
// **** if this line is commented out, it will work
Session.set("messageHelper", {message: 'HERE'});
// ****
$('#messageDiv').show();
}
});
Template.popup.helpers({
messageHelper: function(){
return Session.get("messageHelper");
}
});
我认为更改后的会话变量会以原始状态重新渲染您的模板,该状态设置 style="display: none"。 这里讨论这个问题。 解决方案是重新组织模板,以便反应性不在切换显示的模板中。
更简单的解决方案可能是在出现消息时使用车把 #if 助手来显示您的模板:
<template name="popup">
{{#with messageHelper}}
{{#if message}}
<div id="messageDiv">
message is {{message}}
</div>
{{/if}}
{{/with}}
</template>
那么在事件处理程序中不需要 .show()。
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- jQuery/Javascript-是否可以获得链中的下一个调用
- 角度 2:使用一个 http 调用的结果来执行另一个调用
- AngularJs 从指令中的另一个调用控制器
- 如何运行一个调用某个函数的函数首先完成它,然后再调用下一个函数.正在创建回调函数
- 如何在Javascript中创建一个调用其他函数的函数
- 从同一对象中的另一个调用函数
- Angularjs元素在一个调用中同时查找select和input-这是单个标记查找的极限
- 制作一个调用'回调函数'
- 如何通过AngularJS中的一个调用在多个控制器($scope)中插入相同的数据
- Meteor 与 Session.set 和 jQuery 在一个调用中组合在一起
- 有没有办法在浏览器中停止HTTP AJAX调用,以便另一个调用可以继续
- 在 Ember.js 2.3 中,如何将 hasMany 异步调用编译为 ember 中的一个调用而不是多个调用
- 延迟链接 - 然后在上一个调用完成但出现错误时调用成功回调
- 一个 Javascript 函数,它创建一个调用函数本身的对象
- 如果我从JS调用SWF,它已经忙于处理来自JS的另一个调用,会发生什么
- 将全局onBeforeCall侦听器附加到除一个调用之外的所有AJAX调用
- Javascript只执行最后一个调用的函数
- jQuery在一个调用中验证远程解析两个字段
- 如何创建一个调用函数的函数