我创建了一个应用程序,我生成了一个文件,并将其下载到客户端桌面。现在,我设法使用手动点击事件创建它。这是我的代码。
Template.productionRun.events({
'click .btGenFile': function(e,t){
console.log('i\'m now click')
// bootbox.alert('Welcome back New Meteorite!');
var strLoc = "C:/LabelPrint/labelPrint.lbl";
var strQty = 1;
var str1 = "14N1234";
var str2 = 50;
var str3 = "Made in Philippines";
var str4 = "Cebu";
var strPj = strLoc + "\r\n" +
strQty + "\r\n" +
str1 + "\r\n" +
str2 + "\r\n" +
str3 + "\r\n" +
str4;
var blob = new Blob([strPj], {
type: "text/plain;charset=utf-8;",
});
saveAs(blob, "job.pj");
}
});
但是,文件生成的频率至少为1个文件/秒,因此我需要它在没有用户的情况下自动下载文件。有没有办法可以使用计时器来触发下载事件?
我看到了meteor-reactive-timer包,但遗憾的是我不知道如何使用我的代码。
答案 0 :(得分:1)
使用events
或rendered
挂钩,而不是使用模板的created
挂钩,而不是setInterval
:
Template.productionRun.rendered = function() {
// This code runs once the template has been rendered
console.log('Template has been rendered!');
var interval = 1000;
setInterval(function() {
// This runs once every `interval` milliseconds
var strPj = [
"C:/LabelPrint/labelPrint.lbl",
1, "14N1234", 50,
"Made in Philippines",
"Cebu"
].join('\r\n');
var blob = new Blob([strPj], {
type: "text/plain;charset=utf-8;",
});
saveAs(blob, "job.pj");
}, interval);
};
请注意,我还使用Array.join
来构建strPj
而不是单个字符串。这样更快,更容易维护!