0

我知道这很简单,但它也完全让我难以理解为什么它不起作用。这达到了呈现 html 并在“欢迎聊天”下方显示 Hello World 消息和“回声问好”按钮的地步,但它没有做的是将消息更改为“工作”。

我有一个 .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,我使用的是按钮类,但我应该使用 input type="button" 代替!

4

2 回答 2

1

要使其“反应”,您应该使用流星提供的会话。您可以简化代码,使其更易于阅读和理解。

Session 在客户端上提供了一个全局对象,您可以使用它来存储任意一组键值对。使用它来存储列表中当前选定项目之类的内容。

您首先将会话变量设置为“欢迎聊天”。在您的点击事件中,您可以将 Session 变量设置为“工作”。然后,您可以将模板设置为在 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");
    }
  });
}

这是未经测试的,但试一试。

于 2013-09-17T04:50:02.900 回答
0

我不太清楚你所说的“不工作”是什么意思。但我相信你将不得不做以下事情。

  1. 列出您需要防止浏览器调用默认事件的项目。前任:-
Template.hello.events({
   'click input' : function () {
      //your code here 
      return false;
   }
});

2. 使用meteor方法而不是template()

于 2013-09-17T04:44:57.560 回答