如何在流星空格中访问变量引用的数组元素

How can I access a variable-referenced array element in Meteor spacebars?

本文关键字:变量 引用 数组元素 访问 流星 空格      更新时间:2023-09-26

在空格模板中,我有一个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 }}

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

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