當頁面刷新時,流星會話是否重置?流星會話和瀏覽器刷新
出於某種原因,我不認爲他們做了,但似乎他們這樣做。有沒有辦法讓他們堅持下去?
如果不是最好的解決方案是什麼?
我想允許相同的數據顯示用戶是否刷新(這些數據是特定於用戶的),即使他們還沒有註冊。
當頁面刷新時,流星會話是否重置?流星會話和瀏覽器刷新
出於某種原因,我不認爲他們做了,但似乎他們這樣做。有沒有辦法讓他們堅持下去?
如果不是最好的解決方案是什麼?
我想允許相同的數據顯示用戶是否刷新(這些數據是特定於用戶的),即使他們還沒有註冊。
該Session
是一個全球性的關鍵價值存儲,一個反應。
http://docs.meteor.com/#session
會議提供了可用於存儲鍵 - 值對任意一組客戶端上的一個全局對象。用它來存儲當前選中的項目在列表中。
Session的特別之處在於它是被動的。如果您從模板內部調用Session.get(「currentList」),則只要調用Session.set(「currentList」,x),模板就會自動重新渲染。
如果您在客戶端堅持的東西,你可以,如果你照顧舊的瀏覽器使用瀏覽器localstorage
或餅乾。
這實際上是Amplify軟件包的作用,除了各種後備支持。 –
所以我認爲最好的方法是使用amplifyJS包。
這裏是某人的要點,顯示他們是如何使用它: https://gist.github.com/2865146
其實你可以做的就是創建一個會話時設置()被調用中擴增的商店存儲價值的「繼承」。您將自動繼承Session的所有反應性屬性。這裏是代碼,它爲我工作:
SessionAmplify = _.extend({}, Session, {
keys: _.object(_.map(amplify.store(), function(value, key) {
return [key, JSON.stringify(value)]
})),
set: function (key, value) {
Session.set.apply(this, arguments);
amplify.store(key, value);
},
});
只需用SessionAmplify.set/get調用替換所有Session.set/get調用。當調用set()時,調用父級會話方法以及amplify.store()。當第一次創建「子類」時,它會將放大存儲區中的所有內容加載到其鍵中,以便可以使用get()立即檢索它們。
您可以測試這裏的排行榜示例的工作變化:https://github.com/sebastienbarre/meteor-leaderboard
我剛剛創建的UserSession包氣氛,這基本上是一個基於用戶的持久Session
。
爲了清楚起見,此包將會話變量保存在服務器端集合中。如果你正在尋找會話變量的客戶端存儲,根據sebastien.b的回答,這很好地通過放大來實現。 – mozboz
很好的包,但它繼承userId,這意味着我們需要一個登錄用戶。 :( –
這是一個古老的問題,但它是搜索「流星會話管理器」的第二個命中,所以我認爲重要的是補充一點,u2622:persistent-session軟件包完美地解決了這個問題。
從文檔在: https://atmospherejs.com/u2622/persistent-session
安裝
流星添加u2622:持續會話
這就是它!現在你可以使用會話。setPersistent設置會話 變量,刷新後將保存。
如果你願意,你可以讓Session.set做到這一點。請參閱下面的 選項部分。
感謝這個。它爲我工作。我只需要改變我的代碼是:改變Session.set(..到Session.setAuth(;和Session.clearAuth(..在註銷。 –
它在這裏可能會很有用,值得注意的是,在持久會話的引擎下,它只能放大這個功能! –
我保存了Meteor.user中的一些常用數據,當頁面刷新可以設置它時。 – crapthings
是的,這只是我想要堅持,即使他們沒有登錄。 – Jonovono