Meteor 模板实例的创建回调和呈现回调之间有什么区别?
官方文件 当调用Template.myTemplate的实例时,会调用一次[rendered] 第一次呈现到DOM节点并放入文档中 在评估模板逻辑之前调用[created]回调 这是第一次Meteor 模板实例的创建回调和呈现回调之间有什么区别?,meteor,Meteor,官方文件 当调用Template.myTemplate的实例时,会调用一次[rendered] 第一次呈现到DOM节点并放入文档中 在评估模板逻辑之前调用[created]回调 这是第一次 我有点困惑。它们之间到底有什么区别?它们似乎都是在“创建”模板实例后调用的。如果有,它们各自的用途是什么?另外,我发现Meteor文档的很大一部分缺少可靠的示例,这对于初学者来说确实很难理解。模板呈现回调是在DOM呈现在屏幕上之后触发的。当模板实例化但尚未呈现时,将触发创建的回调 您可以使用rendered回
我有点困惑。它们之间到底有什么区别?它们似乎都是在“创建”模板实例后调用的。如果有,它们各自的用途是什么?另外,我发现Meteor文档的很大一部分缺少可靠的示例,这对于初学者来说确实很难理解。
模板
呈现
回调是在DOM呈现在屏幕上之后触发的。当模板实例化但尚未呈现时,将触发创建的回调
您可以使用rendered
回调来更改页面上的任何内容。例如,如果您使用select2
,您需要将
选项转换为更好的select2版本,您可以这样做(您需要select2包,但任何jquery插件的工作方式都类似)
您不能在.created
上执行此操作,因为select2尚未在DOM上绘制
您可以使用.created
设置任何变量。例如,如果您在页面的某个位置使用会话.get(“myvalue”)
,则可以在即将创建页面时使用.created
将其重置为默认值,例如
Template.hello.created = function() {
Session.set("myvalue", null);
}
通常,呈现回调用于以某种方式操纵DOM。当创建的回调与DOM无关,而是与管理变量或数据有关时,将使用该回调
这里还有一些区别
如果使用每模板订阅(最近添加到Meteor),则将使用.created¬.rendered:
您可以使用.rendered来初始化google地图
Template.hello.rendered = function() {
var map = new google.maps.Map(document.getElementById('map-canvas'), {});
}
Rendered与$(document).ready()相同,并在创建DOM之前调用created
Template.hello.created = function() {
this.subscribe("some_publication");
}
Template.hello.rendered = function() {
var map = new google.maps.Map(document.getElementById('map-canvas'), {});
}