Javascript meteor:键入一些输入值后重新计算帮助器值
我的模板如下所示:Javascript meteor:键入一些输入值后重新计算帮助器值,javascript,meteor,Javascript,Meteor,我的模板如下所示: <input type="text" name="inputValue" id="inputVal"> {{#each group}} <section> <h2>{{title}}</h2> {{#each element}} <p>{{description}} {{numberValue}} {{unit}}</p>
<input type="text" name="inputValue" id="inputVal">
{{#each group}}
<section>
<h2>{{title}}</h2>
{{#each element}}
<p>{{description}} {{numberValue}} {{unit}}</p>
{{/each}}
</section>
{{/each}}
因此,我需要一名助手:
Template.usedTemplate.helpers({
'calculatedValue': function() {
return document.getElementById("#inputVal").value * this.numberValue;
}
});
我希望这是创建helper的正确编码,因为值在each循环中使用
但我的问题是,用户在加载站点后键入inputValue。那么,在用户在输入字段中键入一些值之后,我必须做什么来重新计算行呢
(如果在开始时有一种输出信息文本也很好,因为默认情况下没有给定值。键入一些值后,结果会显示出来。)我没有测试此代码,但请尝试以下操作:
var userInput = new Tracker.Dependency;
Template.usedTemplate.events({
'keypress #inputVal': function (event) {
userInput.changed();
}
});
Template.usedTemplate.helpers({
'calculatedValue': function() {
userInput.depend();
return Template.instance().$("#inputVal").val() * this.numberValue;
}
});
旁注:document.getElementById()
已经需要一个ID作为参数,因此不需要
前缀
通常,
calculatedValue
帮助程序不会自动更新,因为它不包含反应式方法调用,例如someCollection.find()
或Session.get('xyz')
。但是使用Tracker.Dependency
,您可以使任何事情都成为被动的。我认为您可以简单地使用Session或ReactiveVar来解决您的问题
Session.setDefault("input-value", "")
Template.usedTemplate.events({
'keypress #inputVal': function (event) {
Session.set("input-value", Template.instance().$("#inputVal").val());
}
});
Template.usedTemplate.helpers({
'calculatedValue': function() {
return Session.get("input-value") * this.numberValue;
}
});
或者使用ReactiveVar
Template.usedTemplate.onCreated(function(){
this.inputValue = new ReactiveVar("")
})
Template.usedTemplate.events({
'keypress #inputVal': function (event) {
Template.instance().set(Template.instance().$("#inputVal").val());
}
});
Template.usedTemplate.helpers({
'calculatedValue': function() {
return Template.instance().get() * this.numberValue;
}
});
我建议使用ReactiveVar,因为会话是全局val
在使用之前,您应该将ReactiveVar添加到应用程序中
meteor add reactive-var
我得到错误
uncaughtreferenceerror:Tracker没有定义
yes它只在客户端。。。Tracker
是自己的软件包吗?奇怪。这根本不应该发生。你能将你的代码转储到Meteorpad并在复制后再次在这里发表评论吗?我必须从更大的角度来理解到底发生了什么。
meteor add reactive-var