Meteor 中的 Template.created 和 Template.onCreated 有什么区别?

What is the difference between Template.created and Template.onCreated in Meteor?

文档中提到了

Template.templatename.onCreated(以及 .onRendered.onDestroyed 方法)。

但是当我调用这些时什么也没有发生。例如,如果我调用 Template.templatename.created,这有效。

知道发生了什么事吗?我误读了文档中的内容吗?这是对其他内容的引用吗?

编辑:我刚刚在源代码中找到了这个:

https://github.com/meteor/meteor/blob/master/packages/blaze/template.js#L65

在第 180 行,这些在 1.1 中被标记为已弃用,但我仍然没有从 onCreated 得到任何爱....

有人知道我做错了什么吗?

Template.channels_admin.onCreated = function () {
    // .... doesn't run
};

created 是旧的 onCreated.

这样使用.onCreated(function() {

这让您在编写包时变得非常棒。

在 meteor 1.0.4 之前,created 是所有模板可用的函数,运行 在任何模板逻辑(事件、渲染、助手等)之前。在 1.0.4 中,它被替换为 onCreated,这是一个 注册回调的函数 (同样每个回调在任何模板逻辑之前运行一次)。

created 保留在原位以免破坏现有代码,但被认为已弃用,取而代之的是 onCreated.

因为 created 是模板上的一个函数,它可以通过以下方式分配:

Template.myTemplate.created = function() {console.log('here');};

created不应该直接调用。

正如您从文档中看到的那样,onCreated 是使用如下函数调用的:

Template.myTemplate.onCreated(function() {
  console.log('hello');
});

onCreated 的好处是您可以为同一个模板注册多个回调。在实践中,这可能不会经常出现,但是在您需要附加到外部包提供的模板的情况下,这很好。同样的逻辑适用于 onRenderedonDestroyed.

从 meteor 1.1 开始,不推荐使用 created、rednered 和 destroyed 方法来代替 onCreated、onRendered 和 onDestroyed。

其次,对之前声明的语法有一个小改动:

Template.channels_admin.created = function () {
    // .... this is deprecated
};

但是从 1.1 开始,它应该这样声明:

Template.channels_admin.onCreated(function () {
     // .... works like a charm.
});