Meteor Deps - 运行客户端功能

时间:2012-06-29 10:49:35

标签: meteor

我很难掌握Meteor deps,为了具体说明我的用例是:

2)当集合发生变化时,我想在客户端运行一个jQuery函数

认为 deps是我正在寻找的,但目前我刚刚使用过:

Template.templateName.set () ->
 return Set.find({})

......就反应性而言。

一个解决方案,每次更改时只需console.log的集合就足够了。

1 个答案:

答案 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函数的来源。