如果說(shuō)集合是meteor的核心功能,那么響應(yīng)式可以能讓這個(gè)核心 功能更強(qiáng)大陪捷。
集合從根據(jù)上改變你的應(yīng)用程序的數(shù)據(jù)處理方式回窘。
而不必手動(dòng)檢查數(shù)據(jù)更改,再根據(jù)這些變化 去修改html頁(yè)面市袖,meteor可以隨時(shí)
檢測(cè)到數(shù)據(jù)的更改啡直,并將它無(wú)縫地應(yīng)用到你的用戶界面上。
meteor函數(shù)響應(yīng)式計(jì)算? ? ? ? ? ? 可以觸發(fā)變化 的響應(yīng)式數(shù)據(jù)源
Templates? ? ? ? ? ? ? ? ? ? ? ? session變量
Tracker.autorun? ? ? ? ? ? ? ? ? Collection的數(shù)據(jù)庫(kù)請(qǐng)求
Template.autorun? ? ? ? ? ? ? ? Meteor.status
Blaze.render? ? ? ? ? ? ? ? ? ? Meteor.user
Blaze.renderWithData? ? ? ? ? ? Meteor.userId
調(diào)用響應(yīng)式數(shù)據(jù)
實(shí)時(shí)性的方法是通過(guò)使用.observe(),當(dāng)指向數(shù)據(jù)的指針發(fā)生改變時(shí)就會(huì)觸發(fā)
回調(diào)苍碟。
Posts.find().observe({
added:function(post){
//jq處理添加標(biāo)簽
},changed:function(post){
//jq修改變化 的標(biāo)簽
},removed:function(post){
//jq刪除指定數(shù)據(jù)的標(biāo)簽
}
})
聲明式方法的核心是響應(yīng)式酒觅,這種聲明讓我們定義了對(duì)象之間的關(guān)系,
并讓他們保持同步微峰,而我們就不必為每個(gè)的可能發(fā)生的修改去指定相應(yīng)的行為舷丹。
響應(yīng)式變量
1、reactiveVar介紹
不同于內(nèi)置的session,ReactiveVar要添加一個(gè)包:
meteor add reactive-var
和session十分相似只有一些區(qū)別:
ReactiveVars沒(méi)有全局的名稱蜓肆,像"foo"和session.get("foo")
相反颜凯,它們是在本地創(chuàng)建或使用,例如仗扬,添加一個(gè)模板實(shí)例症概,像this.foo.get()一樣。
Reactivevars沒(méi)法有自動(dòng)在hot code pushes遷移早芭,但是session狀態(tài)是.
它可以設(shè)置成任何值彼城,但session只能限制為json和ejson
2、ReactiveVar使用場(chǎng)景\
模板變量.reactiveVarName.set(0)
模板變量.reactiveVarName.get()
this.aa.set()
this.aa.get()
reactivevar的使用和session不同退个,我們需要在模板實(shí)例中獲得它募壕。
這是因?yàn)檫@樣使得我們能夠在整個(gè)模板中獲得reactivevar,無(wú)需使用全局
的session變量语盈,并創(chuàng)建一個(gè)響應(yīng)式的數(shù)據(jù)源來(lái)連接模板實(shí)例舱馅。
Meteor.startup(function(){
Tracker.autorun(function(){console.log('There are '+ Posts.find().count() +' posts');
});
});