我有一个名为index
的模板,由一堆部分模板组成。
<template name="index">
{{> jumbotron }}
{{> crew }}
{{> projects3 }}
{{> projects2 }}
{{> faq }}
{{> contact }}
</template>
假设我有JS代码page-transitions.js
,需要完全加载jumbotron
的DOM才能运行。
简单的做法是不够的:
Template.index.rendered = function(){
// load page-transitions.js
};
我必须做
Template.jumbotron.rendered = function(){
// load page-transitions.js here instead
};
这可能会非常快速,因为您需要非常具体地了解哪些部分模板需要哪些JS代码。并且不同的模板可能需要相同的JS代码,因此您可能遇到多次加载相同JS代码的情况。
有没有办法等到index
模板完全呈现一切,包括所有嵌套的子模板,然后运行JS代码?
Meteor.startup()
也不起作用。
答案 0 :(得分:1)
您可以尝试以下几点:
首先,只使用经典的jQuery.ready
方式。因为,为什么不呢?
Meteor.startup(function() {
$(document).ready(function() {
// stuff.
});
});
或者您可以尝试Tracker.afterFlush
:
Meteor.startup(function() {
// I know each Template.template.rendered has its own afterFlush, but those
// computations are defined way before Meteor.startup so then, theoretically,
// the below code should be executed last even if it triggers recomputations here.
Tracker.afterFlush(function() {
// stuff.
});
});