[英]How to call function after page load in meteor
我使用cursor.observechanges來查看mongo中是否插入了新記錄,並在新的recored插入時發出通知並且工作正常。但這里的問題是我的應用程序第一次加載時,我收到了那些通知警報,因為它觀察了那些變化。點擊下一頁的方式。
cursor.observeChanges({
added: function(id, object) {
Notification.error('NEW Record',object);
var audio = new Audio('audio.mp3');
audio.play();
}
});
所以我需要在頁面加載后調用此函數。我嘗試使用
Template.foo.onRendered(function () {
cursor.observeChanges({
added: function(id, object) {
Notification.error('NEW Record',object);
var audio = new Audio('audio.mp3');
audio.play();
}
});
});
但它在我的情況下沒有用。我還有其他方法可以做到這一點。或者如果可能的話,我們如何設置5秒的時間並在該時間間隔后調用上述功能? 任何幫助將不勝感激。謝謝!
根據文檔 Template#onRendered
:
注冊將此模板的實例插入DOM時要調用的函數。
嘗試將您的代碼包裝在Meteor.defer
:
Template.foo.onRendered(function() {
Meteor.defer(function() {
cursor.observeChanges({
added: function(id, object) {
Notification.error('NEW Record',object);
var audio = new Audio('audio.mp3');
audio.play();
}
});
})
});
如果它沒有幫助,請嘗試將其包裝在Meteor.setTimeout
:
Template.foo.onRendered(function() {
Meteor.setTimeout(function() {
cursor.observeChanges({
added: function(id, object) {
Notification.error('NEW Record',object);
var audio = new Audio('audio.mp3');
audio.play();
}
});
}, 5000)
});
行為是正確的,因為對於模板,確實添加了那些記錄。 瀏覽並瀏覽,重新創建模板,現在所有這些相同的記錄再次成為模板的新記錄。
您需要將新記錄的概念與模板分開,並將記錄作為應用程序的新記錄。
我可以用時間戳解決這個問題。 例如
這意味着您的收藏將需要一個createdAt字段。
此解決方案既可用於重新加載應用程序,也可用於瀏覽模板或從模板進行瀏覽以及長時間運行的模板。
為了獲得最佳效果,請在Meteor方法調用返回服務器時間之前不要開始訂閱。 所有這些都應該在onCreated()中發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.