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

标签 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
};

最佳答案

在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 .

关于javascript - Meteor 中的 Template.created 和 Template.onCreated 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30417066/

相关文章:

javascript - 如何不断增加购物 list 中的总价

javascript - meteor 中如何使用模板生成动态 HTML 标签属性?

javascript - 创建 Meteor 包库?

没有持久性的 meteor 流数据 : Asking for best/right practise

javascript - 如何将值传递给 Controller ​​?

javascript - 在 Windows 8 应用程序中使用 Youtube Player API

javascript - 如何在 IE 11 中动态地将 flash-object 添加到 html 中?

c++ - 错误: no match for 'operator<<' C++

c++ - 实现 : template <ClassDerivingFromBase, 不>

c++ - 使用不完整类型的函数模板实例化