簡體   English   中英

流星輔助函數與變量?

[英]Meteor helper functions versus variables?

我試圖顯示我網站上所有在線用戶的數量,並安裝了meteor-user-status插件來解決此問題。 我以為我要做的就是添加模板助手

Template.header.helpers({
    numOnline: Meteor.users.find({"status.online":true}).count()
});

像這樣,並在我的標題模板中包含{{numOnline}}變量。 但是,由於某種原因,這導致始終在線顯示0個用戶。 但是,當我在javascript控制台中簡單運行方法Meteor.users.find({“ status.online”:true})。count()時,它為在線用戶提供了正確的數量。

在弄亂了一點之后,我通過將其包裝在一個函數中來使其工作:

Template.header.helpers({
    numOnline: function(){
        return Meteor.users.find({"status.online":true}).count();
    }
});

此更改使其工作完美,但我不知道為什么。 有人可以解釋為什么需要將其包裝在函數中嗎?

添加Christian Fritz,我認為可能會發生的唯一原因是在第一種情況下numOnline: Meteor.users.find({"status.online":true}).count()集合在評估時尚未准備好模板,並分配0或空數組[]因為這是訂閱返回的內容,在第二種情況下,是,當集合中發生更改時,函數將做出反應,因此這就是為什么該值很快就會被集合填充與訂閱和功能將執行最新的價值。僅我的兩分錢。 如果我錯了,請糾正我。

好吧,這就是事實(文檔也告訴您)。 之所以需要將其作為函數,是因為它具有反應性:為了在以后的某個時間點(當反應性數據源更改值時)重新評估代碼段,您需要具有一個函數。

暫無
暫無

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

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