文档中提到了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
的好处是您可以为同一模板注册多个回调。实际上,这可能不会经常出现,但是在需要附加到外部软件包提供的模板的情况下,这很好。同样的逻辑适用于onRendered
和onDestroyed
。