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

How to access elements in the current template in meteor?

我有这样的模板,

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

这就是我创建 foos 的方式,

 // 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..." 段,并在结果中显示结果。

结果显示正确。我的问题是 "LOADING..." 只隐藏在最顶层的 foo 上。不是其他的。

我该如何解决这个问题?

编辑: 正如建议的那样,

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

我用过,

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

这也行不通:)

感谢 Meteor 模板引擎,您可以访问一个模板范围的 jQuery 对象,该对象只会在相应模板中包含 return 个元素。

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

我就是这样做的

模板...如果theResult未定义,将呈现else路径。

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

Javascript...结果是一个简单的Session.get调用

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