如果说集合是meteor的核心功能,那么响应式可以能让这个核心 功能更强大。
集合从根据上改变你的应用程序的数据处理方式。
而不必手动检查数据更改,再根据这些变化 去修改html页面,meteor可以随时
检测到数据的更改,并将它无缝地应用到你的用户界面上。
meteor函数响应式计算 可以触发变化 的响应式数据源
Templates session变量
Tracker.autorun Collection的数据库请求
Template.autorun Meteor.status
Blaze.render Meteor.user
Blaze.renderWithData Meteor.userId
调用响应式数据
实时性的方法是通过使用.observe(),当指向数据的指针发生改变时就会触发
回调。
Posts.find().observe({
added:function(post){
//jq处理添加标签
},changed:function(post){
//jq修改变化 的标签
},removed:function(post){
//jq删除指定数据的标签
}
})
声明式方法的核心是响应式,这种声明让我们定义了对象之间的关系,
并让他们保持同步,而我们就不必为每个的可能发生的修改去指定相应的行为。
响应式变量
1、reactiveVar介绍
不同于内置的session,ReactiveVar要添加一个包:
meteor add reactive-var
和session十分相似只有一些区别:
ReactiveVars没有全局的名称,像"foo"和session.get("foo")
相反,它们是在本地创建或使用,例如,添加一个模板实例,像this.foo.get()一样。
Reactivevars没法有自动在hot code pushes迁移,但是session状态是.
它可以设置成任何值,但session只能限制为json和ejson
2、ReactiveVar使用场景\
模板变量.reactiveVarName.set(0)
模板变量.reactiveVarName.get()
this.aa.set()
this.aa.get()
reactivevar的使用和session不同,我们需要在模板实例中获得它。
这是因为这样使得我们能够在整个模板中获得reactivevar,无需使用全局
的session变量,并创建一个响应式的数据源来连接模板实例。
Meteor.startup(function(){
Tracker.autorun(function(){console.log('There are '+ Posts.find().count() +' posts');
});
});
网友评论