如何在Meteor中渲染另一个模板后插入或渲染模板?

时间:2014-11-22 08:07:11

标签: meteor spacebars

我有这个布局模板:

<template name="layout">

  {{> yield }}

  {{> tail }}

</template>

现在Meteor在开始渲染{{> yield }}

之前似乎不等待{{> tail }}完全呈现

这是尾巴。这里的HTML需要在创建剩余的DOM之后加载(我使用的是Bootstrap模板)。

<template name="tail">

  <!-- Plugin JavaScript -->
  <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
  <script src="/js/classie.js"></script>
  <script src="/js/cbpAnimatedHeader.js"></script>

  <!-- Contact Form JavaScript -->
  <script src="/js/jqBootstrapValidation.js"></script>
  <script src="/js/contact_me.js"></script>

  <!-- Custom Theme JavaScript -->
  <script src="/js/agency.js"></script>

</template>

在呈现所有其他模板后,如何在tail.html内部呈现HTML?

我可以使用:

Template.layout.rendered = function(){

    var scripts = '\
  <!-- Plugin JavaScript -->\
  <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>\
  <script src="/js/classie.js"></script>\
  <script src="/js/cbpAnimatedHeader.js"></script>\
  \
  <!-- Contact Form JavaScript -->\
  <script src="/js/jqBootstrapValidation.js"></script>\
  <script src="/js/contact_me.js"></script>\
  \
  <!-- Custom Theme JavaScript -->\
  <script src="/js/agency.js"></script>\
    ';

    $('body').append(scripts);

};

但这很难看。它将尾部代码分解为一个字符串,强制您添加\,这使得以后编辑代码变得非常困难。

1 个答案:

答案 0 :(得分:0)

var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onreadystatechange = function() {
    // if (this.readyState == 'complete') { callFunctionFromScript(); }
}
script.src = 'path/to/your-script.js';
head.appendChild(script);

你可以直接将其添加到

里面的html head标签中
Template.layoutHeader.rendered = function() { .. }