Javascript 如何访问Meteor Spacebar中的变量引用数组元素?

Javascript 如何访问Meteor Spacebar中的变量引用数组元素?,javascript,templates,meteor,spacebars,Javascript,Templates,Meteor,Spacebars,在一个模板中,我有一个javascript数组x和一个索引I,例如 Template.test.helpers({ 'foo': function() { return { x: ['aa','bb','cc'], i: 1 } } }); 我可以使用{{x.[1]}访问模板中x的固定元素: {{template name="test"}} {{#with foo}} {{x

在一个模板中,我有一个javascript数组
x
和一个索引
I
,例如

Template.test.helpers({
    'foo': function() {
        return {
            x: ['aa','bb','cc'],
            i: 1
        }
    }
});
我可以使用
{{x.[1]}
访问模板中
x
的固定元素:

{{template name="test"}}
    {{#with foo}}
        {{x.[1]}}
    {{/with}}
{{/template}}
但是
{{x.[i]}
不起作用


如何访问
x[I]
?谢谢

一种解决方案是定义自定义辅助对象:

Template.test.helpers({
    'getElement': function(a, i) {
        return a[i];
    }
});
然后在模板中,使用:

{{ getElement x i }}

有了这样一个基本的例子,我认为您的助手解决方案是最简单的;然而,我们的目标应该始终是将逻辑从视图层(helpers&html)移开,这就是为什么如果空格键看起来很有限,那么它只是一个温和的重构提醒

对于更复杂的问题,一种更简洁的方法可能是在需要在模板中使用x[i]之前解决它,或者将x转换为对象。例如,将x[i]保存到数据上下文或模块对象并直接访问它。当你在一个月内重温代码时,通过数组索引引用东西会让生活变得糟糕