簡體   English   中英

MeteorJS-強制重新繪制模板

[英]MeteorJS - force redraw of templates

My Meteor應用程序顯示用戶列表,並顯示每個用戶

  • 一個小圖表,顯示用戶隨時間的得分
  • 最近的分數

由於用戶具有不同類型的分數(例如,score1,score2,score3),因此我允許使用一組單選按鈕來選擇要顯示的分數。

該圖表是使用jQuery迷你圖插件繪制的,並在“渲染”函數中繪制

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,並且我按照降序選擇的分數類型對用戶進行排序。

因此,您可以在選擇“ order by”條件時查看單選按鈕。

現在,每次我選擇不同的單選按鈕時,似乎都不會刷新現有模板(流星是否在“重用”現有模板,因為它已經存在了?)。

第一次運行我的應用程序時,我可以看到“渲染”被打印了10次。 但是,如果我選擇其他分數類型,則現在只能看到6條“渲染”消息,這是因為其中已有4個模板。 因此,該圖表未更新。

如何強制重新渲染模板? 還是有更好的方法呢?

沒有調用強制重新渲染的功能。 當模板的依賴關系更改時,模板會自動重新渲染。 因此,為了使listItem重新呈現,它需要依賴於反應性資源。

通過放入Session變量,這將是最容易的。 例如,假設您將currentScoreType存儲為會話變量。 然后將您的第四行更改為:

arr = createChartArray(this.data, Session.get("currentScoreType"));

您還可以研究使用Tracker.autorun ,它可以實現相同的結果而無需聲明全局會話變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM