Meteor Blaze.renderWithData-如果数据发生更改,如何自动更新模板?

Meteor Blaze.renderWithData-如果数据发生更改,如何自动更新模板?,meteor,Meteor,我用Meteor建立了一个列表。我不希望整个列表是被动的,即数据更改时自动更新。但是,如果与列表项相关的数据发生更改,我确实希望列表项的标题更新。我正在使用Blaze.renderWithData插入列表项,那么如何实现这一点呢?使用两个帮助程序,一个是返回光标的非反应性帮助程序,另一个是返回标题的反应性帮助程序。要使某物无反应,请使用 在下面的人为示例中,我将返回一个反应性标题,其中包含光标计数(如果非零),而从帮助器返回的光标是非反应性的 subHandle = Meteor.subscri

我用Meteor建立了一个列表。我不希望整个列表是被动的,即数据更改时自动更新。但是,如果与列表项相关的数据发生更改,我确实希望列表项的标题更新。我正在使用Blaze.renderWithData插入列表项,那么如何实现这一点呢?

使用两个帮助程序,一个是返回光标的非反应性帮助程序,另一个是返回标题的反应性帮助程序。要使某物无反应,请使用

在下面的人为示例中,我将返回一个反应性标题,其中包含光标计数(如果非零),而从帮助器返回的光标是非反应性的

subHandle = Meteor.subscribe('mySubscription');

Template.foo.helpers({
  cursor: function(){
    if ( subHandle.ready() ) return Tracker.nonreactive(function() {
      return myCollection.find(query,options);
    });
  }),
  title: function(){
    var nDocs = myCollection.find(query,options).count();
    if ( nDocs ) return "Title (" + nDocs + ")";
    else return "Title";
  }
});
更新: 修改为处理准备就绪的订阅句柄,以便第一次使用就绪订阅调用非反应函数


。您可以看到,当您向玩家添加积分时,总积分会更新,但玩家的得分和排序永远不会改变。

@Michel Floyd您是否建议在使用Blaze.renderWithData时不能这样做?一点也不。例如,这些帮助程序可以位于嵌入动态模板的模板上。我想在这种情况下,您不需要光标辅助对象,只需要使用Tracker.nonresponse来获取Blaze.renderWithData@Michel Floyd的数据上下文-您介意在您提供的答案中添加并使用Blaze.renderWithData进行示例吗?