Meteor 模板实例的创建回调和呈现回调之间有什么区别?

Meteor 模板实例的创建回调和呈现回调之间有什么区别?,meteor,Meteor,官方文件 当调用Template.myTemplate的实例时,会调用一次[rendered] 第一次呈现到DOM节点并放入文档中 在评估模板逻辑之前调用[created]回调 这是第一次 我有点困惑。它们之间到底有什么区别?它们似乎都是在“创建”模板实例后调用的。如果有,它们各自的用途是什么?另外,我发现Meteor文档的很大一部分缺少可靠的示例,这对于初学者来说确实很难理解。模板呈现回调是在DOM呈现在屏幕上之后触发的。当模板实例化但尚未呈现时,将触发创建的回调 您可以使用rendered回

官方文件

当调用Template.myTemplate的实例时,会调用一次[rendered] 第一次呈现到DOM节点并放入文档中

在评估模板逻辑之前调用[created]回调 这是第一次


我有点困惑。它们之间到底有什么区别?它们似乎都是在“创建”模板实例后调用的。如果有,它们各自的用途是什么?另外,我发现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'), {});
}