模板之间的区别是什么?创建和模板.onCreated在Meteor

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

本文关键字:onCreated Meteor 创建 是什么 之间 区别      更新时间:2023-09-26

在文档中提到了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是一个在任何模板逻辑(事件、呈现、helper等)之前运行的所有模板可用的函数。在1.0.4中,它被onCreated取代,onCreated是一个注册回调的函数(每个回调在任何模板逻辑之前运行一次)。

为了不破坏现有的代码,

created被保留在适当的位置,但被认为是不赞成onCreated

因为created是模板上的函数,所以可以通过:

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

不能直接调用created

从文档中可以看到,onCreated是用这样的函数调用的:

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

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

从流星1.1开始,已经弃用了create, redered和destroy方法来代替onCreated, onrender和onDestroyed。

其次,前面的语法有一个小的改变,它是这样声明的:

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

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

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

created是旧的onCreated

像这样使用.onCreated(function() {