如何使会话变量被动?

时间:2013-03-11 18:37:35

标签: meteor

我正在运行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}}块中选择它?眼花缭乱。谢谢,

2 个答案:

答案 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>
相关问题