【问题标题】:Handle events between different templates处理不同模板之间的事件
【发布时间】:2017-05-09 11:57:57
【问题描述】:

我在模板 B 中有一个模板 A。当点击模板 B 中的按钮 B 时,模板 A 中的按钮 A 应该改变颜色。

我正在使用 Session get/set 来更改变量,以便我可以更改颜色。

这是我的代码:

 Session.set('monitor',0);


    Template.B.events({ 
         'click #buttonB' :function(event){
              Session.set('monitor',1);
          }
         return FlowRouter.go('/templateC');
    })

/*NOT WORKING */
    Template.A.helpers({
         randomlyNamed: function(){
          if (Session.get('monitor') == 1){
              document.getElementById("buttonA").style.background = "red";

          }
        Session.set('monitor',0);
    } 
    })

问题:当按钮 B 被点击时,会话可以设置为 1。问题是我不确定将更改颜色代码放在模板 A 中的哪个位置。

【问题讨论】:

    标签: javascript jquery html templates meteor


    【解决方案1】:

    您可以在帮助程序中设置样式并在模板中引用它。

    html(在模板 A 中):

    <button id="buttonA" style="background-color: {{btnColor}}">
    

    js:

    Template.A.helpers({
      btnColor(){ return (Session.get('monitor') == 1)? "red" : "black"; }
    })
    

    这里black 是另一种颜色,但它可以是任何颜色。

    【讨论】:

    • 谢谢!这正是我一直在寻找的。一个问题,颜色改变后如何将显示器设置回 0?
    • 如果你这样做了,颜色会变回来。在这种模式中,Session 变量直接控制颜色。如果您只想在单击按钮时更改颜色,则应直接在原始模板事件中设置颜色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2020-03-13
    相关资源
    最近更新 更多