html中的流星变化变量[简单]

时间:2013-09-17 04:26:13

标签: meteor

我知道这很简单,但它也完全让我知道为什么它不起作用。这样就可以渲染html,并在“欢迎聊天”下面显示一条消息,并显示一个“向后问好”的按钮,但是它没有做的就是将消息更改为“work”。

我有一个.js文件:

if (Meteor.isClient) {
var message="welcome to chat";
function template(message){
Template.hello.greeting = function () {
return message;
};};
template(message);

Template.hello.events({
'click input' : function () {
  template("work ");
}
});

}

和html如下所示:

<head>
<title>chat</title>
</head>
<body>
 {{> hello}}
</body>
<template name="hello">
<h1>Hello World!</h1>
{{greeting}}
<button value="Click">Say Hello Back!</button>
</template>

这简直令人尴尬,但我无法弄清楚我做错了什么。我知道我不应该重新渲染页面,因为使用流星的全部意义在于它的实时HTML,所以我该怎么办呢?

我想出了主要问题!

对于我的html,我使用的是按钮类,但我应该使用输入类型=“按钮”代替!

2 个答案:

答案 0 :(得分:1)

要使其成为"reactive",您应该使用流星提供的Session。您可以简化代码,以便于阅读和理解。

  

Session在客户端上提供了一个可用于的全局对象   存储一组任意键值对。用它来存储像   列表中当前选定的项目。

首先将会话变量设置为“欢迎聊天”。在您的单击事件中,您将Session变量设置为“work”。然后,您将设置模板以在更改时返回Session变量的值。你的javascript看起来像这样。

if (Meteor.isClient) {
  Session.set("message", "welcome to chat");

  Template.hello.greeting = function () {
    return Session.get("message");
  }

  Template.hello.events({
    'click input' : function () {
      Session.set("message", "work");
    }
  });
}

这是未经测试但尝试一下。

答案 1 :(得分:0)

我不太确定“不工作”是什么意思。但我相信你必须遵循。

  1. 阻止浏览器调用默认事件所需的列表项。 例如: -
  2. Template.hello.events({
       'click input' : function () {
          //your code here 
          return false;
       }
    });
    

    2。使用meteor methods而不是模板()