我从来没有花时间/机会真正理解Deps.autorun的范围...所以在这里我再次遇到困扰我很多次的同样问题(以前,我总是找到一个解决方法,绕过问题)...无论如何,基本上,我在服务器端定义了一个函数:
serverFunc = function() {}
在客户端,我做
Deps.autorun(function() { var test = serverFunc(); }
我收到错误消息,说没有定义serverFunc。
有人可以帮助我理解为什么会这样吗?
非常感谢!
答案 0 :(得分:1)
Deps.autorun()
总是运行一次,然后每当跟踪的任何依赖项发生更改时重新运行该函数。这些依赖关系通常需要设置为Meteor反应数据源。在客户端上未定义然后在服务器上定义的简单函数不足以重新触发。
如果您希望从客户端调用仅在服务器上定义的功能,则必须做两件事:
Meteor.methods
Meteor.call
否则,客户端上不存在仅在服务器上定义的函数,并且在客户端上调用它将在调用未定义函数时抛出错误。