0

我正在努力掌握 Meteor deps,为了具体说明我的用例是:

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

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

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

...就反应性而言。

每次更改时简单地将console.log收集到集合的解决方案就足够了。

4

1 回答 1

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] 如果/当他们合并此拉取请求时,您可以执行以下操作:

Meteor.deps.await(function() { return Set.find(); }, function() { 
  console.log('changed'); 
});

await如果您想了解更多信息,可以查看函数的来源。

于 2012-06-30T03:12:11.957 回答