我知道这很简单,但它也完全让我知道为什么它不起作用。这样就可以渲染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,我使用的是按钮类,但我应该使用输入类型=“按钮”代替!
答案 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)
我不太确定“不工作”是什么意思。但我相信你必须遵循。
Template.hello.events({ 'click input' : function () { //your code here return false; } });
2。使用meteor methods而不是模板()