学习 MeteorJS 试图制作我自己的转换脚本...卡在事件处理上
Posted
技术标签:
【中文标题】学习 MeteorJS 试图制作我自己的转换脚本...卡在事件处理上【英文标题】:Learning MeteorJS trying to make my own conversion script...stuck with the event handling 【发布时间】:2015-12-05 23:11:29 【问题描述】:我只是在 Meteor 上做一些随机的事情,以便在我真正进入更严肃的事情之前掌握它。
无论如何,我很确定我将帮助函数与项目中的实际 html 相关联的方式可能有问题。基本上,我正在尝试制作一个简单的摄氏度到华氏度/华氏度到摄氏度的转换器,只要有人输入数字,# 就会被转换。不涉及点击按钮。
这是 HTML 代码:
<head>
<title>My Conversion Script</title>
</head>
<body>
<h1>My Conversion Script</h1>
>converter
</body>
<template name="converter">
<b>Enter Celsius:</b>
<input type="text" name="celsius" userCalculation>
<b>Enter Fahrenheit:</b>
<input type="text" name="fahrenheit" userCalculation>
</template>
这是 JS 文件:
if (Meteor.isClient)
Template.converter.helpers(
'userCalculation': function()
Session.get('celsiusCall');
Session.get('fahrenheitCall');
if (!NaN(celsius))
return celsius * 9/5 + 32;
else if (!NaN(fahrenheit))
return (fahrenheit - 32) * 5/9;
);
Template.converter.events(
'keyup .celsius': function(e)
var celsius = e.target.value;
Session.set('celsiusCall', celsius);
,
'keyup .fahrenheit': function(e)
var fahrenheit = e.target.value;
Session.set('fahrenheitCall', fahrenheit);
);
我通过 console.log 检查了事件处理,并且事件运行正常。我在设置会话的方式或将辅助函数与 HTML 本身结合的方式都犯了错误。
另外,顺便说一句,我假设一个会话只能处理 1 个变量是否正确?
编辑:我得到的错误是“模板助手中的异常:ReferenceError: celsius is not defined”
【问题讨论】:
【参考方案1】:这是一个变量范围问题 - 您在模板事件中定义的变量无法在模板帮助程序中访问,反之亦然。所以你在你的事件处理程序中定义了var farenheit = e.target.value
,但是你的助手中的farenheit
返回未定义。您需要在两者中定义变量。
会话用作键值对字典,因此如果我正确理解您的问题,您可以在其中定义多个变量。
Session.set('first', 'a');
Session.set('second', 'b);
Session.keys // first: 'a', second: 'b'
【讨论】:
【参考方案2】:您正在正确地创建和接收会话密钥,但您从未将它们分配给您正在使用的变量的名称。您需要为 Session.get 调用创建变量,如下所示:
var celsiusCall = Session.get('celsiusCall');
var fahrenheitCall = Session.get('fahrenheitCall');
然后你可以像现在这样使用这些变量。
【讨论】:
以上是关于学习 MeteorJS 试图制作我自己的转换脚本...卡在事件处理上的主要内容,如果未能解决你的问题,请参考以下文章
想学编程有空自己做脚本,学那个软件的好呢?易语言?按键精灵?还有其他吗?那个比较好呢?