我正在学习 Meteor(和 Javascript),并试图理解为什么一个东西有效而不是另一个的概念。
在我的模板中,我有
<template name="test">
<p>Salary: {{salary}}</p>
<button class="update">Update</button>
</template>
在我的客户端 .js 中,我有以下内容:
if (Meteor.isClient) {
Session.setDefault("salary", 100);
Template.test.helpers({
salary: function() {
return Session.get("salary");
}
});
Template.test.events({
"click .update": function (event, template){
Session.set("salary", Session.get("salary") + 100);
}
});
}
这符合我的预期。
但我花了很长时间才发现我需要将工资设置为“函数”。由于来自 C#/WPF 背景,我执行了以下操作:
Template.test.helpers({
salary: Session.get("salary")
});
这导致自动更新无法工作,让我真的摸不着头脑!
为什么对于meteor.js,您需要将变量设置为函数才能自动更新工作?这是 JavaScript 的限制/事情还是 meteor 的事情?
我尝试四处寻找,但没有发现任何有用的东西。我知道如何开始工作,但试图理解为什么我需要将变量设置为函数而不是值?
如果有人能指出我正确的方向,我将不胜感激!
谢谢
最佳答案
当代码被解释时,薪水被计算到表达式的右侧,当发生这种情况时,Session.get("salary")
在页面加载时进行评估,并将该值返回到工资属性。
当您将工资值设置为函数时,工资值将归属于一个函数,并且每当您检索工资值时都会调用该函数,因此再次运行它会返回 Session.get("salary")
的当前值。声明。
关于javascript - Meteor 函数与变量跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973389/