簡體   English   中英

流星助手-DOM操作

[英]Meteor Helpers - DOM Manipulation

// Works
var counter = 0;
    var myInterval = Meteor.setInterval(function(){
      counter++;
      var time = moment().hour(0).minute(0).second(counter).format('HH:mm:ss');
      console.log(time);
    }, 1000);

// Inside Helper - Does Not Work

Template.clockRunner.helpers({
  start: function () {
    var counter = 0;
    var time = moment().hour(0).minute(0).second(counter).format('HH:mm:ss');
    var myInterval = Meteor.setInterval(function(){
      counter++
    }, 1000);
    return time;
  },
})

第一個版本控制台以1秒為增量記錄時間。 Helper版本在DOM中顯示“ 00:00:00”,但不會遞增,如果我在helper中控制台記錄時間,則它每秒記錄“ 00:00:00”。

我不確定我是否誤解了助手的反應性,還是看不到小錯誤。 提前致謝!

助手旨在向Blaze模板提供數據; 除非從模板調用,否則不會調用它。

也就是說,您應該將助手視為提供數據的東西,而不應該“做任何事情”。 隨着模板的呈現以及響應數據的處理,助手可能會以意想不到的方式被調用多次。

我認為您希望在onRendered()方法中啟動計時器; 當模板放到屏幕上時即被調用。 (當模板從屏幕上移開時,有一個相應的方法被調用,因此可以停止計時器)。

計時器啟動后,您可以將計時器數據寫入反應型變量,然后將輔助程序返回該計時器數據的格式化版本。 因為它在反應式var中,所以可以確保每次計時器計時時都會重新調用您的助手。

最后一部分只是確保Blaze模板引用幫助程序。

暫無
暫無

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

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