我的Meteor应用程序显示用户列表及其显示的每个用户
由于用户有不同类型的分数(例如score1,score2,score3),我允许一组单选按钮选择要显示的分数。
该图表是使用jQuery sparkline插件绘制的,它是在"渲染的"中绘制的。功能
Template.listItem.rendered = function() {
console.log("rendered");
arr = createChartArray(this.data, currentScoreType); // gets the array of scores for the current score type
$(this.find(".itemBodyLeft")).sparkline(arr, {
width:60,
height:35,
lineColor:"#FF2F00",
fillColor:"#fff0dc"
});
};
我正在使用IronRouter,因为有很多用户,我将用户列表限制为10,并按照降序选择的分数类型对用户进行排序。
因此,您可以将单选按钮视为选择"按顺序排列"条件。
现在,每当我选择不同的单选按钮时,看起来现有的模板都不会刷新(Meteor'重新使用'现有的模板,因为它已经存在?)。 / p>
当我第一次运行我的应用程序时,我可以看到"呈现"被打印出10次。但是,如果我选择不同的分数类型,我现在只能看到6"渲染"消息和那是因为4个模板已经存在。因此图表没有更新。
如何强制重新渲染模板?或者有更好的方法吗?
答案 0 :(得分:0)
无法调用强制重新渲染的功能。模板在其依赖项发生更改时会自动重新呈现。因此,为了让listItem
重新呈现,它需要依赖于被动资源。
通过放入Session变量,这将是最简单的。例如,假设您将currentScoreType
存储为会话变量。然后将第四行更改为:
arr = createChartArray(this.data, Session.get("currentScoreType"));
您还可以考虑使用Tracker.autorun,它可以在不声明全局会话变量的情况下实现相同的结果。