我正在运行Meteor 0.5.7,并在用户点击提交时尝试显示引导警报消息。
client.js
Handlebars.registerHelper('isSuccessful',function(input){
return Session.get("success");
});
Template.form.events({
'click .submit' : function (event, template) {
if (condition) {
Session.set("success", true);
// hide warning, show success
$('#valid_form').show();
$('#invalid_form').hide();
} else {
Session.set("success", false);
// hide success, show warning
$('#valid_form').hide();
$('#invalid_form').show();
}
}
});
Template.form.rendered = function () { $('.alert').hide();};
page.html中
<body>
{{> page}}
</body>
<template name='page'>
{{> form}}
</template>
<template name='form'>
<!-- Show Alerts Above Form -->
<div class="alert alert-success" id="valid_form">..</div>
<div class="alert" id="invalid_form">..</div>
{{#if isSuccessful}}
<div>SHOW CONFIRMATION PAGE</div>
{{else}}
<div>SHOW INPUT FIELDS</div>
{{/if}}
<div>
</template>
当用户初始点击提交并且不满足条件时,他们必须再次单击“提交”才能收到警告消息。所有其他时间的逻辑工作。
我已经看过这个 - How does Meteor's reactivity work behind the scenes?,并重新阅读有关反应式编程部分的Meteor文档,但有些事情仍然存在问题。
客户端的else语句是否默认为成功的会话变量== false,并且车把模板会立即在{{else}}块中选择它?眼花缭乱。谢谢,
答案 0 :(得分:3)
我的问题的答案似乎是更改返回Session.get(“success”)以在Handlebar注册助手中返回Session.equals(“success”,true)。从我正在阅读的内容来看,它的“失效”较少? - 不确定那是什么意思,但这是一个开始!
答案 1 :(得分:2)
如果你的目的是隐藏/显示条件的相关警报,你可以这样做:
<强> client.js 强>
Template.form.rendered = function() {
// hide all alerts when elements are rendered
$('.alert').alert('hide');
}
Template.form.events({
'click .submit' : function (event, template) {
if (condition) {
// hide warning, show success
$('#valid_form').alert();
$('#invalid_form').alert('hide');
} else {
// hide success, show warning
$('#valid_form').alert('hide');
$('#invalid_form').alert();
}
}
});
<强> page.html中强>:
<body>
{{> page}}
</body>
<template name='page'>
{{> form}}
</template>
<template name='form'>
<div class="alert alert-success" id="valid_form">..</div>
<div class="alert" id="invalid_form">..</div>
</template>