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

时间:2015-05-23 20:04:15

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

3 个答案:

答案 0 :(得分:7)

在meteor 1.0.4之前,function query (options) { var localCache = {}; // whatever you use for your caching return function (params) { var term = params.term || ''; // check if the query has been cached if (term in localCache) { return localCache[term]; } // call the original `ajax` query return localCache[term] = window.Select2.query.ajax(params); } } 是一个可用于在任何模板逻辑(事件,渲染,帮助器等)之前运行的所有模板的函数。在1.0.4中,它被替换为onCreated,这是注册回调的函数(同样,每个回调在任何模板逻辑之前运行一次)。

created留在原地,以免破坏现有代码,但被视为弃用,而不是created

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

created
不应直接调用

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

从文档中可以看出,使用如下函数调用created

onCreated

关于Template.myTemplate.onCreated(function() { console.log('hello'); }); 的好处是你可以为同一个模板注册多个回调。在实践中,这可能不会经常出现,但是在需要附加到外部包提供的模板的情况下它很好。同样的逻辑也适用于onCreatedonRendered

答案 1 :(得分:1)

created是旧onCreated

.onCreated(function() {

一样使用它

这使你在编写包时非常好。

答案 2 :(得分:1)

从meteor 1.1开始,已经弃用了已创建的,已删除和已销毁的方法,而不是onCreated,onRendered和onDestroyed。

其次,之前声明的语法稍有变化:

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

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

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