如何访问meteor当前模板中的元素?

我有这样的模板,

<template name = "foo"> <p id="loading" >LOADING...</p> <p> {{theResult}} </p> </template> 

这是我如何创buildfoos,

  // foos = [a, b, c, d]. With each button click I add a new item to the array {{#each foos}} {{> foo .}} {{/each}} 

而且foo是如何工作的,

 Template.foo.created = function(){ var name = Template.currentData(); api_call(name, function(err, result){ Session.set(name, result); }); } Template.foo.helpers({ 'theResult': function(){ var name = Template.currentData(); if(Session.get(name)) { $("#loading").hide(); return Session.get(name); } else { return ""; } } }) 

所以我的期望是当数据来自api_call时,隐藏“LOADING …”para,并在Results中显示结果。

结果正确显示。 我的问题是“LOADING …”只能隐藏在最上面的foo。 不是其他的。

我怎样才能解决这个问题?

编辑:如build议,而不是,

 $("#loading").hide(); 

我用了,

 Template.instance().$("#loading").hide(); 

这也没有工作:)

这是我该怎么做的

模板…如果theResult未定义,则其他path将被渲染。

 <template name="foo"> {{#with theResult}}<p> {{this}} </p> {{else}}<p id="loading" >LOADING...</p> {{/with}} </template> 

Javascript … theResult是一个简单的Session.get调用

 Template.foo.helpers({ theResult: function(){ var name = Template.currentData(); return name && Session.get(name); } }); 

感谢meteor模板引擎,你可以访问一个模板范围的jQuery对象,它只会返回相应模板中的元素。

 Template.foo.helpers({ 'someText': function(){ var template = Template.instance(); template.$('p').changeSomeattr(); return Session.get('myPara'); } });