Template实例的创建和渲染回调有什么区别?

时间:2015-02-28 15:23:47

标签: meteor

官方文件

  当Template.myTemplate的实例为时,

[render]被调用一次   渲染到DOM节点并第一次放入文档。

     在评估模板的逻辑之前调用

[created]回调   这是第一次。

有点让我困惑。他们之间究竟有什么区别?一旦模板实例被“创建”,它们似乎都被调用。如果是这样,他们各自的用法是什么?附:我发现Meteor文档的很大一部分缺乏可靠的例子,初学者很难理解。

1 个答案:

答案 0 :(得分:8)

在屏幕上呈现DOM后触发模板rendered回调。

您可以使用created回调来更改页面上的任何内容。例如,如果您使用rendered,则需要将select2选项转换为更好的select2版本,您可以执行此操作(您需要select2包,但任何jquery插件的工作方式都相似)

<select>

您无法在Template.hello.rendered = function() { this.$("select").select2({}); } 上执行此操作,因为尚未在DOM上绘制select2。

您可以使用.created设置任何变量。例如,如果您在页面的某个位置使用.created,则可以使用Session.get("myvalue")将其重置为默认值,例如

.created

通常,渲染回调用于以某种方式操纵DOM。创建的回调在不是关于DOM而是关于管理变量或数据时使用。

以下是一些区别。

你会使用.created&amp;如果您使用每个模板订阅(最近添加到Meteor),则不会显示:

Template.hello.created = function() {
    Session.set("myvalue", null);
}

您可以使用.rendered初始化Google地图

Template.hello.created = function() {
    this.subscribe("some_publication");
}