我使用Meteor建立了一个列表。我不希望整个列表被激活,即数据更改时自动更新。但是,如果与该列表项相关的数据发生更改,我确实希望更新列表项的标题。我正在使用Blaze.renderWithData
插入列表项,那么我该如何实现呢?
答案 0 :(得分:0)
使用两个助手,一个返回光标的非反应性助手和一个返回标题的被动助手。要制作非反应性内容,请使用Tracker.nonreactive,(related question)。
在下面的设计示例中,我返回一个包含游标计数的被动标题,如果从帮助程序返回的游标为非零,则为非零。
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";
}
});
<强>更新强> 修改为处理准备好的订阅句柄,以便第一次调用非反应函数并准备好订阅。
Here's a Meteorpad with a working example。您可以看到,当您向玩家添加积分时,总积分会更新,但玩家得分和排序永远不会改变。