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

big*_*olf 2 javascript templates meteor meteor-blaze

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
};
Run Code Online (Sandbox Code Playgroud)

Dav*_*don 7

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

created留在原地,以免破坏现有的代码,但被认为是赞成使用onCreated.

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

Template.myTemplate.created = function() {console.log('here');};
Run Code Online (Sandbox Code Playgroud)

created 不应该直接调用.

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

Template.myTemplate.onCreated(function() {
  console.log('hello');
});
Run Code Online (Sandbox Code Playgroud)

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