摘要:在開(kāi)發(fā)的過(guò)程中有的時(shí)候我們只需要存儲(chǔ)一些臨時(shí)的變量,我們并不想使用來(lái)存儲(chǔ),這個(gè)時(shí)候我們可以使用來(lái)存儲(chǔ),可以方便的存儲(chǔ)一些狀態(tài),也可以在中使用。中存儲(chǔ)的的值項(xiàng)目地址
在開(kāi)發(fā)的過(guò)程中有的時(shí)候我們只需要存儲(chǔ)一些臨時(shí)的變量,我們并不想使用collection來(lái)存儲(chǔ),這個(gè)時(shí)候我們可以使用Session來(lái)存儲(chǔ),Session可以方便的存儲(chǔ)一些狀態(tài),也可以在helpers中使用。
Session是變化的在客戶端我們?cè)赾olletcions存儲(chǔ)的數(shù)據(jù),當(dāng)數(shù)據(jù)在一個(gè)客戶端更新的時(shí)候,更新的數(shù)據(jù)會(huì)立刻同步到服務(wù)器和其他的客戶端,這樣因?yàn)镸ongo.Collection是可以是別處Meteor的更新數(shù)據(jù),Session是一樣的道理,但是他并不會(huì)同步到服務(wù)器端,和collections一樣我們并不需要寫(xiě)額外的代碼維護(hù)Session的狀態(tài),更新Session的內(nèi)容只需要是用Sessiong.set(key,value),當(dāng)Session的值變化的時(shí)候,只需要在helpers里面調(diào)用Session.get(key)即可。
在html里面顯示點(diǎn)擊數(shù)meteor-session {{> counter_template}}一共點(diǎn)擊了 {{counter}} times.
counter的值需要在helpers中返回
用Session存儲(chǔ)點(diǎn)擊的總數(shù)if (Meteor.isClient) { if (typeof( Session.get("counter")) == "undefined") { Session.setDefault("counter", 0); } Template.counter_template.helpers({ counter: function () { return Session.get("counter"); } }); Template.counter_template.events({ "click button": function () { var counter = Session.get("counter") counter++; Session.set("counter", counter); } }); }
我們先檢查Session里面的counter有沒(méi)有值,沒(méi)有的話就設(shè)置一個(gè)默認(rèn)值為0,不然我們?cè)谧黾臃ǖ臅r(shí)候會(huì)有NaN(Not a Number )的錯(cuò)誤。
在helper里面給counter賦值為Session.get("counter")。
處理button的點(diǎn)擊事件,每點(diǎn)擊一次,計(jì)數(shù)器加1.
我們同樣的打開(kāi)連個(gè)瀏覽器做測(cè)試,點(diǎn)擊一個(gè)瀏覽器的button的時(shí)候,其顯示的計(jì)數(shù)器會(huì)加1,另一個(gè)瀏覽器沒(méi)有任何變化。
Session并不會(huì)在server或者click中保存數(shù)據(jù),這樣就會(huì)出現(xiàn)一個(gè)問(wèn)題當(dāng)我刷新瀏覽器的時(shí)候,計(jì)數(shù)器會(huì)從0開(kāi)始,怎么去解決這個(gè)問(wèn)題呢?
可以在在瀏覽器中保存計(jì)數(shù)器的值。
if (Meteor.isClient) { if (typeof( Session.get("counter")) == "undefined") { Session.setDefault("counter", localStorage.getItem("counter")); } Template.counter_template.helpers({ counter: function () { return Session.get("counter"); } }); Template.counter_template.events({ "click button": function () { var counter = Session.get("counter") counter++; localStorage.setItem("counter", counter) Session.set("counter", counter); } }); }
localStorage是html5中的本地存儲(chǔ),在每次給Session的計(jì)數(shù)器賦值的同時(shí),我們也給本地存儲(chǔ)賦值,在每次初始化的時(shí)候我們給Session的默認(rèn)值是本地存儲(chǔ)的計(jì)數(shù)器的值,這樣只要我們本地存儲(chǔ)的計(jì)數(shù)器不被清除,刷新瀏覽器就不會(huì)導(dǎo)致計(jì)數(shù)器從0開(kāi)始了。
localStorage中存儲(chǔ)的counter的值:
項(xiàng)目地址:https://github.com/jjz/meteor/tree/master/meteor-session
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/18812.html
摘要:在我的機(jī)子上,運(yùn)行于端口,以避免和其他默認(rèn)運(yùn)行于端口的沖突。我們可以使用命令連接數(shù)據(jù)庫(kù)查看定義應(yīng)用層次創(chuàng)建的模板應(yīng)用有一個(gè)問(wèn)題,客戶端和服務(wù)器段的代碼是一樣的。在中加入然后添加問(wèn)題模板注意我們使用了來(lái)確保用戶未登錄的情況下應(yīng)用。 編者注:我們發(fā)現(xiàn)了有趣的一系列文章《30天學(xué)習(xí)30種新技術(shù)》,正在翻譯中,一天一篇更新,年終禮包。下面是第15天的內(nèi)容。 到目前為止我們討論了Bower...
摘要:在我的機(jī)子上,運(yùn)行于端口,以避免和其他默認(rèn)運(yùn)行于端口的沖突。我們可以使用命令連接數(shù)據(jù)庫(kù)查看定義應(yīng)用層次創(chuàng)建的模板應(yīng)用有一個(gè)問(wèn)題,客戶端和服務(wù)器段的代碼是一樣的。在中加入然后添加問(wèn)題模板注意我們使用了來(lái)確保用戶未登錄的情況下應(yīng)用。 編者注:我們發(fā)現(xiàn)了有趣的一系列文章《30天學(xué)習(xí)30種新技術(shù)》,正在翻譯中,一天一篇更新,年終禮包。下面是第15天的內(nèi)容。 到目前為止我們討論了Bower...
摘要:組件有一個(gè)名叫狀態(tài)的特殊變量。將會(huì)異步地更新?tīng)顟B(tài)屬性,然后讓組件重新渲染。使其可以在為時(shí),過(guò)濾我們已完成的任務(wù)。因?yàn)槲覀円呀?jīng)有數(shù)據(jù)在客戶端的里了,所以添加額外的總數(shù)并不會(huì)向服務(wù)器再次申請(qǐng)數(shù)據(jù)。 在組件狀態(tài)中存儲(chǔ)臨時(shí)數(shù)據(jù) 在這個(gè)步驟,我們會(huì)在為應(yīng)用的客戶端添加數(shù)據(jù)過(guò)濾特性,這樣用戶就可以通過(guò)點(diǎn)擊’確認(rèn)選框‘來(lái)查看當(dāng)前進(jìn)行的任務(wù)。我們會(huì)去學(xué)習(xí)如何僅在客戶端使用React組件狀態(tài)來(lái)存儲(chǔ)臨時(shí)模...
摘要:當(dāng)一個(gè)應(yīng)用啟動(dòng)時(shí),會(huì)自動(dòng)加載這些庫(kù),為應(yīng)用提供了一個(gè)基礎(chǔ)環(huán)境。也就是說(shuō),模板文件只能包含以這三種標(biāo)簽為頂層標(biāo)簽的片段。在中,我們需要判斷當(dāng)前的具體運(yùn)行環(huán)境,以便執(zhí)行相應(yīng)的代碼。 一、全棧開(kāi)發(fā)平臺(tái) - 不僅僅是前端 Meteor和那些名聲如雷貫耳的前端框架,比如Angular, React等都不一樣,它是一個(gè) 采用單一開(kāi)發(fā)語(yǔ)言的全棧開(kāi)發(fā)的平臺(tái):開(kāi)發(fā)者可以使用JavaScript同時(shí) 進(jìn)...
摘要:發(fā)布與訂閱在端使用函數(shù)注冊(cè)一個(gè)的發(fā)布者,需要在客戶端對(duì)進(jìn)行訂閱,使用訂閱了現(xiàn)在已經(jīng)添加的數(shù)據(jù)就會(huì)重新出現(xiàn)在頁(yè)面上。利用發(fā)布訂閱模式,我們也可以實(shí)現(xiàn)對(duì)于私有數(shù)據(jù)的訪問(wèn)。 我們可以使用安全的方法讓用戶端不直接操作數(shù)據(jù)庫(kù),但是還是可以直接讀取數(shù)據(jù)庫(kù)內(nèi)容,如果我們還需要保護(hù)私有的數(shù)據(jù)存儲(chǔ),在客戶端直接使用Collection.find(),這樣的操作方式在實(shí)際的項(xiàng)目中并不會(huì)使用,這樣的數(shù)據(jù)無(wú)法...
閱讀 3070·2023-04-25 16:50
閱讀 904·2021-11-25 09:43
閱讀 3512·2021-09-26 10:11
閱讀 2518·2019-08-26 13:28
閱讀 2531·2019-08-26 13:23
閱讀 2419·2019-08-26 11:53
閱讀 3566·2019-08-23 18:19
閱讀 2987·2019-08-23 16:27