如何使用meteor.js在特定模板的主体上获得onload函数?

如何使用meteor.js在特定模板的主体上获得onload函数?,meteor,meteorite,Meteor,Meteorite,我正在尝试获取某个模板的以下行为: <body onload="someInitFunction();"> 假设我有以下标记(我使用的是mrt路由器,而不是iron路由器,用于{{renderPage}}): //主模板 陨石诺维兹 {{>头} {{renderPage} {{>页脚} 该renderPage是第二个模板: <template name="secondTemplate"> {{#if currentUser}} <div clas

我正在尝试获取某个模板的以下行为:

<body onload="someInitFunction();">

假设我有以下标记(我使用的是mrt路由器,而不是iron路由器,用于{{renderPage}}):

//主模板
陨石诺维兹
{{>头}
{{renderPage}
{{>页脚}
该renderPage是第二个模板:

<template name="secondTemplate">
  {{#if currentUser}}
    <div class="col-md-2">
      <div class="list-group">
        <a class="list-group-item" href="{{render thirdTemplate please...}}">Third Template</a>
        <a class="list-group-item" href="{{render fourthTemplate please...}}">Fourth Template</a>
      </div>
    </div>

    // In this case let's say thirdTemplate gets rendered
    {{render the choice taken above please...}}

  {{/if}}
</template>

{{{#如果当前用户}}
//在本例中,假设第三个模板被渲染
{{请呈现上面的选择…}
{{/if}
在这个模板中,根据点击的链接(在本例中是第三个),最终将出现第三个模板,该模板将在javascript框架的帮助下显示数据可视化,需要一个
来显示数据:

<template name="thirdTemplate">
  <div class="col-md-5">
    <h2>THIS!! section needs a "<body onload="initFunction();"> in order to work" ></h2>
  </div>

  <div class="col-sm-5">
    <h2>Some other related content here</h2>
  </div>  
</template>

这部分需要一个“为了工作”>
这里还有一些其他相关内容
总而言之,我有三个问题:

1a。如何获得第三个模板以获得

2a。在secondTemplate中以何种方式呈现不同的模板

2b。即使此模板是主模板中的渲染页面,我是否可以在此模板中使用
{{renderPage}

1a。如何获得第三个模板以获得

您可能希望在呈现第三个模板时调用initFunction,因此只需在呈现回调中调用它

Template['thirsTemplate'].rendered = function(){
    initFunction()
}
2a。我可以用哪种方式在中呈现不同的模板 第二个模板

2b。我可以在这个模板中使用{{renderPage}}吗 template是主模板中的renderedPage,还是应该在中执行 还有别的办法吗

侦听链接上的单击,当出现这种情况时,您可以手动呈现所需的模板(如果需要,可以使用),并将其添加到文档中的正确节点。看


这可能是通过路由器实现的(我不知道那个包)。

我认为您想要使用的是创建的
回调,它将在每次创建模板时调用,而不是每次更改导致模板重新呈现时调用的
呈现的
回调

Template.thirdTemplate.created = function(){
    initFunction()
}

有关其他类型回调的模板,请参阅文档:

为了获得
,我必须执行以下操作:

首先将以下函数添加到客户端文件夹中的.js文件中:

Template.thirdTemplate.rendered = function() { // Template.thirdTemplate.created - also worked.
  $('body').attr({
    onload: 'init();'
  });
}
然而,这给了我一个错误,说initFunction没有定义。在标准html页面中,我的功能可以很好地工作,但在meteor中,我不得不将我的功能从:

function initFunction(){
  //what ever i wished to do 
}
致:


关于页面的呈现,iron路由是一种可行的方法,因为路由器插件不再处于开发阶段。

模板“get”
body onload
是什么意思?不清楚你在问什么,你可能做错了什么
body onload
是一个在页面完成加载时运行的函数,大约与
Meteor.startup
过程运行的时间相同,远远早于任何模板的呈现时间。因此,在呈现模板时设置
body onload
,不会起任何作用。很可能您想将必要的代码移动到
Template.thirdTemplate.rendered
callback.@HubertOG我的意思是,用于数据可视化的javascript框架需要一个initFunction(),它将在假设的thirdTemplate中显示这些可视化;在html页面的´´上。这个我不知道怎么做。也许我可以用一个简单的$(document).ready(function(){});?如果他不需要等待一些模板内容,他可以在任何地方调用
initFunction
,而不需要在创建的回调中调用。他可能只是想知道模板是什么时候创建的,以便在谷歌分析中存储一些活动,或者其他与内容无关的内容。
function initFunction(){
  //what ever i wished to do 
}
init = function() {
  //what ever i wished to do
}