我很难掌握Meteor deps,为了具体说明我的用例是:
2)当集合发生变化时,我想在客户端运行一个jQuery函数
我认为 deps是我正在寻找的,但目前我刚刚使用过:
Template.templateName.set () ->
return Set.find({})
......就反应性而言。
一个解决方案,每次更改时只需console.log的集合就足够了。
答案 0 :(得分:1)
使用上下文可以做你想做的事情。它有点复杂[1],但如果你按照文档中的deps示例,你可以做你想要的事情。像
这样的东西var setup = function() {
var context = new Meteor.deps.Context();
context.on_invalidate(function() {
setup();
});
context.run(function() {
Set.find({});
console.log('changed');
});
}
setup();
或者您可以创建一个不会返回任何内容的帮助程序,以利用为您设置的上下文:
Template.templateName.do_nothing ->
console.log 'changed'
Set.find({})
null
虽然这会强制HTML在您不想要的时候刷新。
另一方面,您可能只想要Collection.observe
。
[1]如果/当他们合并这个pull request时,您可以执行以下操作:
Meteor.deps.await(function() { return Set.find(); }, function() {
console.log('changed');
});
如果您想要更深入了解,可以查看await
函数的来源。