Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 如何使会话变量成为被动的?_Meteor - Fatal编程技术网

Meteor 如何使会话变量成为被动的?

Meteor 如何使会话变量成为被动的?,meteor,Meteor,我正在运行Meteor 0.5.7,并试图在用户单击submit时显示引导警报消息 client.js Handlebars.registerHelper('isSuccessful',function(input){ return Session.get("success"); }); Template.form.events({ 'click .submit' : function (event, template) { if (condition) {

我正在运行Meteor 0.5.7,并试图在用户单击submit时显示引导警报消息

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();};
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'>
   <!-- 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>

{{>page}
{{>形式}
..
..
{{#如果成功}
显示确认页面
{{else}
显示输入字段
{{/if}
当用户最初单击submit而条件不满足时,他们必须再次单击submit以获取警告消息。所有其他时候,逻辑都是有效的

我已经看过了-,并且重新阅读了Meteor文档中关于反应式编程部分的内容,但是仍然有一些地方不对劲


客户端中的else语句不应该默认为success==false的会话变量,并且handlebar模板应该立即在{else}块中拾取它吗?有点困惑。谢谢,

如果您的目的是隐藏/显示某个条件下的相关警报,您只需执行以下操作即可:

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();};
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>

{{>page}
{{>形式}
..
..

我的问题的答案似乎是将return Session.get(“success”)更改为return Session.equals(“success”,true)在handlebar注册助手中实现了这一技巧。从我所读到的,它的“无效”?-我不确定atm机是什么意思,但这是一个开始

你的建议会一直显示其中一个警报,而我只希望它在需要时显示。为了澄清这一点,只有当表单字段有效或无效时,警报才会弹出,并且示例中没有显示表单字段只是为了保持简短。希望这有意义?
$('.alert')。alert('hide')
在呈现模板时隐藏所有警报Prashant,感谢您的努力,我更新了模板以反映我在本地使用的内容。如您所见,我希望警报显示在其他html元素之外,这些元素可能具有警报状态,也可能没有警报状态。